[Spring] AOP

aljongjong·2022년 2월 17일
0

학원 복습일지

목록 보기
84/84

AOP는 filter, interceptor와 다르게 controller, service, dao servlet 사이 중간중간 위치하여 작동한다.

1) AOP를 사용하기 위해 먼저 pom.xml에 AOP, AspectJ 관련 dependency를 추가해준다. 그리고 root-context.xml에 Namespaces에 aop를 체크해주고 aop의 확장기능인 AspectJ의 annotation을 설정을 위한 구문을 추가해준다.



2) 그리고 AOP 역할을 해줄 클래스를 생성하고 @Aspect, @EnableAspectJAutoProxy 어노테이션을 사용한다. 먼저 프로젝트 생성시 기본적으로 생성되는 HomeController에 접근할 때 동작할 메소드를 만들어준다. 그리고 언제 작동할지를 정하는 어노테이션 @Before, @Around, @After, @AfterReturning, @AfterThrowing을 사용하고 어노테이션 괄호 안에 타겟 설정을 해준다. 이클립스 IDE에서 AOP 설정시 라인 번호 좌측에 화살표가 생성되는 것을 확인할 수 있다.


3) HomeController에 접근하는 기본 path url로 접근하면 @Before, @After 어노테이션이 붙은 메소드가 작동하는 것을 확인할 수 있다.

4) @Around 어노테이션을 사용하면 JoinPointer를 사용하여 타멧 메소드의 호출을 메소드안에서 정할 수 있다. 아래 메소드에선 타켓 메소드의 호출에 걸리는 시간을 ms단위로 측정하는 예이다. 이처럼 @Around를 사용하면 타겟 호출전(before) 타겟 호출 후(after)를 한 메소드에서 지정할 수 있어 다양한 활용이 가능하다.




5) 타겟이 되는 메소드에 접근하는 url을 실행해본다. controller, service를 지나 타겟이 dao servlet의 메소드를 실행했을 때 설정한대로 순차적으로 동작하는 것을 확인할 수 있다.

0개의 댓글