[Spring] AOP 어노테이션
2020. 7. 29. 23:32ㆍSpring/Spring
1. AOP 어노테이션
1) <aop:aspectj-autoproxy> 엘리먼트
AOP를 어노테이션으로 설정하기 위해 <aop:aspectj-autoproxy>엘리먼트를 정의해야한다. 해당 엘리먼트 선언 시 컨테이너에서 자동으로 어노테이션들을 인식하고 처리해준다.
AOP 어노테이션을 사용하기 위해서는 반드시 어드바이스 객체가 생성되어 있어야 하므로 설정 파일에 <bean> 엘리먼트로 등록이 되어 있거나 @Service와 같은 어노테이션이 어드바이스 클래스에 정의되어 있어야 한다.
/src/main/java/
applicationContext.xml
2) 포인트컷, 어드바이스 설정
어노테이션 설정으로는 @Pointcut을 사용하며 하나의 어드바이스 클래스 안에 여러 개를 선언할 수 있다. 또한 각 포인트컷을 식별할 수 있는 참조 메서드를 사용한다.
어드바이스 동작 시점도 어노테이션을 통해 정의를 하며 어드바이스 메서드가 결합될 포인트컷을 참조해야 한다.
/src/main/java/
LogAdvice.java
3) 애스펙트 설정
@Aspect 어노테이션에는 포인트컷과 어드바이스의 결합으로 반드시 결합하는 설정이 필요하다. @Aspect 설정이 되어 있기 때문에 스프링 컨테이너는 LogAdvice 객체를 애스팩트 객체로 인식한다. 또한 내부의 포인트컷과 어드바이스에 의해 위빙이 처리된다.
/src/main/java/
LogAdvice.java
4) 그 외 어드바이스 설정법
설정 시 예외 발생을 위한 코드는 적절하게 주석 처리/해체를 한다.
/src/main/java/
BeforeAdvice.java, AfterReturningAdvice.java, AfterThrowingAdvice.java, AfterAdvice.java, AroundAdvice.java
5) 외부 포인트컷 참조
각 어드바이스 클래스마다 포인트컷 설정이 포함되면서 동일한 포인트컷이 반복 선언이 되는 문제를 해결하기 위해 독립적인 클래스로 관리한다.
/src/main/java/
PointcutCommon.java, BeforeAdvice.java, AfterReturningAdvice.java
[참고] 스프링 퀵 스타트
728x90
'Spring > Spring' 카테고리의 다른 글
[Spring] 트랜잭션 (0) | 2020.07.30 |
---|---|
[Spring] JdbcTemplate (0) | 2020.07.30 |
[Spring] AOP 엘리먼트, 표현식, JoinPoint, 바인드 변수 (0) | 2020.07.29 |
[Spring] AOP (0) | 2020.07.27 |