어떤 로직을 기준으로 핵심 로직, 부가적인 로직으로 관심사를 나눈다.
만일 여러 코드에서 부가적인 로직이 반복, 공통적으로 사용이 되고 있다면, 해당 관심사(로직)을 모듈화하여 사용한다.
-> 부가적인 관심사를 없애고 핵심 관심사만을 남겨서 해당 기능만 보여주도록 하며
-> 유지보수할 때 일일이 찾아서 수정하지 않고 모듈만 수정해주면 된다.
Aspect
: advice
+ PointCut
최소한의 단위Target
: aspect 가 적용될 객체advice
: 실행될 aspect의 내용JoinPoint
: aspect가 적용가능한 지점PointCut
: aspect 가 실제 실행되는 지점 (JointPoint 의 부분집합 관계)@Component
@Aspect
@Around
@Around("execution(* -- 패키지경로 == ..*. --객체명 --.*(..))*)
: 해당 패키지 경로에 있는 객체명의 모든 메서드에 Aspect를 적용한다는 뜻@Around("@annotation(--어노테이션--)")
사용 시 특정 어노테이션이 붙은 포인트에만 aspect를 적용할 수 있다.@Around
말고 Before
, After
등과 같은 어노테이션을 통해 언제 해당 aspect가 실행 될 지 정할 수 있다.