- Spring에서는 Java로 구현하는 OOP를 보완하기 위해서 AOP를 선택적으로 적용할 수 있도록 Spring AOP를 설계하였다.
- 이는 자바 클래스에
@AspectJ
어노테이션을 사용하는 스타일을 의미한다.
- AspectJ 프레임워크에 의존성을 가지고 있는 것이 아니고, Spring에서 AspectJ에서 제공하는 라이브러리와 동일한 문법(어노테이션)을 사용할 수 있도록 파싱하는 기능을 추가한 것이다.
- 따라서 AspectJ와는 완전히 독립적인 모듈이다.
@AspectJ
설정
- 빈에 advice를 적용하기 위해서는 스프링에서 @AspectJ 지원 설정과 빈의 proxy를 만들 수 있도록 설정되었는지(auto-proxy) 확인할 수 있도록 해야한다. 스프링은 auto-proxy가 설정되어 있고 빈이 advice를 받고 있다면, 자동으로 aspect 적용을 위한 프록시 객체를 생성하고 설정된 pointcut에서 적용될 수 있도록 설정한다.
어노테이션 설정
@Configuration
와 함께 @EnableAspectJAutoProxy
를 사용한다.
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {
}
XML 설정