Java Spring

AOP (Aspect Oriented Programming, 관심 지향 프로그래밍)

Machine_웅 2024. 12. 26. 13:42
728x90
반응형

AOP (Aspect Oriented Programming, 관심 지향 프로그래밍)

애플리케이션을 개발할 때에 구현해야 하는 기능들은 크게 공통 관심 사항 핵심 관심 사항으로 분류할 수 있습니다.

먼저, 핵심 관심 사항은 애플리케이션의 핵심 기능과 관련된 관심 사항으로,

커피 주문 애플리케이션을 예로 든다면 메뉴 등록하기, 주문하기, 주문 변경하기 등이 있을 것입니다.

 

반면, 공통 관심 사항은 모든 핵심 관심 사항에 공통적으로 적용되는 관심 사항들을 의미합니다. 

예를 들어, 메뉴 등록하기, 주문하기, 주문 변경하기 등 모든 핵심 관심 사항에는

로깅이나 보안 등과 관련된 기능들이 공통적으로 적용되어야만 합니다.

 

이 때, 핵심 관심 사항과 공통 관심 사항이 코드에 아래와 같이 함께 모여 있으면

필연적으로 공통 관심 사항과 관련된 코드가 중복될 수밖에 없습니다.

 

이처럼 코드가 중복되어져 있는 경우, 공통 관심 사항을 수행하는 로직이 변경되면

모든 중복 코드를 찾아서 일일이 수정해주어야만 합니다.

 

 

위의 예제에서 발생하는 코드의 중복이라는 문제를 해결하기 위해서는

공통 관심 사항과 관련된 기능들을 별도의 객체로 분리해낸 다음,

 

분리해낸 객체의 메서드를 통해 공통 관심 사항을 구현한 코드를 실행시킬 수 있도록 해야 합니다.

 

이처럼, 애플리케이션 전반에 걸쳐 적용되는

공통 기능을 비즈니스 로직으로부터 분리해내는 것

AOP(Aspect Oriented Programming, 관심 지향 프로그래밍)라고 합니다.

728x90
반응형