2021. 10. 8. 12:06ㆍspring
1. xml 파일에 <aop:aspectj-autoproxy /> 엘리먼트 선언
2. AOP 관련 어노테이션들을 어드바이스 클래스에 설정
@Aspect가 설정된 애스팩트 객체에는 반드시 포인트컷과 어드바이스를 결합하는 설정이 있어야 한다.
아래 예시에서, LogAdvice 클래스 위에 @Aspect가 설정되었으므로 스프링컨테이너는 LogAdvice 객체를 애스팩트 객체로 인식한다.
allPointcut()과 getPointcut() 메소드 위에 각각 @Pointcut 선언
"allPointcut()"과 "getPointcut()"은 각각 참조 메소드이름이 된다.
@Before는 어드바이스 어노테이션으로서 괄호를 추가하고 참조 메소드를 지정하여 포인트컷을 참조한다.
1. 포인트컷을 외부 독립된 클래스로 따로 설정
클래스마다 비슷하거나 같은 포인트컷이 반복 선언되는 문제를 해결하기 위해
2. 사전 처리 기능 구현
클래스이름과 참조메소드 이름을 조합하여 지정
JoinPoint
클라이언트가 호출하는 모든 비즈니스 메소드를 말함
JoinPoint 인터페이스
클라이언트가 호출한 비즈니스의 메소드 정보를 제공
JoinPoint에서 제공하는 메소드
- getSignature() 클라이언트가 호출한 메소드의 시그니처 정보가 저장된 객체 리턴(getName(), toLongString(), toShortString()의 메소드를 제공함)
- getTarget() 클라이언트가 호출한 비즈니스 메소드를 포함하는 객체 리턴
- getArgs() 클라이언트가 메소드를 호출할 때 넘겨준 인자 목록을 Object 배열로 리턴
Execution 명시자 포인트컷 표현식(리턴타입+패키지경로+클래스명+메소드명,매개변수)
'spring' 카테고리의 다른 글
[트랜잭션] (0) | 2021.10.08 |
---|---|
[스프링JDBC] (0) | 2021.10.08 |
[AOP] xml 기반 (0) | 2021.10.07 |
[어노테이션] (0) | 2021.10.06 |
[의존성주입] Setter 인젝션 (0) | 2021.10.06 |