AOP_2
1. 애노테이션을 이용한 AOP
1_1 Advice
- getProduct() 이용 할떄 마다 어드바이스 동작
- 애노테이션이 붙어있는 것을 어드바이스라한다
- execution은 포인트컷이며 필터링 조건이다
1_2. Bean
1_3. Annotation Advice
a. @Before, @After
1) 기본형태
@Before("primitivePointCut"), @After("primitivePointCut")
메소드명은 임의
메소드의 인수는 없는게 기본
메소드의 반환값은 void가 기본
2) 메소드 명을 출력하도록 변경
- org.aspectj.lang.JoinPoint설정
b. @AfterReturning
2. Bean 정의 파일을 이용한 AOP
3. 포인트컷 기술 방법
- AspectJ 라는 AOP제품 사용
- 호출하는 쪽의 메소드나 클래스, 호출되는 쪽의 메소드나 클래스를 조건으로 지정할 수 있는 Primitive Pointcut이라 불리는 포인트컷이 준비됨
- 자주사용하는 포인트컷은 execution 이다
3_1. execution기본 문구
execution(메소드 수식자^메소드의 반환값^패키기.클래스 또는 인터페이스.메소드명(인수의 형|. 인수의형...| ^throws^에외)
^:공백을 의미함
Example
- public String getMethod() 메소드에서 에스펙트를 실행할 수 있는 포인트컷 기술방법은?
a : execution(public String com.kyle.service.ProductDaoImpl.getProduct())
b : execution(* *..*getMethod())
c : execution(* *..ProductDaoImpl.*())
d : execution(public String get*(..))
e : execution(* com.kyle.service.*.*(..))
3_2. 논리연산자 이용
- 포인트컷은 몇가지 포인트컷을 조합해서 사용가능
1) || 또는 OR
Example
execution(* *..ProductServiceImpl.findProduct()) or
execution(* *..ProductDaoImpl.getProduct())
Define
findProduct() 또는 getProduct()를 지정
2) && 또는 and
Example
execution(* * ProductServiceImpl.findProduct())&&
execution(* *..ProductDaoImpl.getProduct())
Define
findProduct() 와 getProduct()를 지정
3) !또는 not
Example
execution(* findProduct()) and not
execution(* *..ProductDaoImpl.*())
Define
ProductDaoImpl이외의 클래스의 메소드 findProduct() 를 지정
'Back-End > SpringFrame_1' 카테고리의 다른 글
[Spring] DataAccessLayer_2 (0) | 2016.07.31 |
---|---|
[Spring] DataAccessLayer_1 (0) | 2016.07.25 |
[Spring] DI_2 (0) | 2016.07.17 |
[Spring] DI_1 (0) | 2016.07.16 |
[Spring] AOP_1 (0) | 2016.07.04 |