Spring의 특징을 보조 업무라 할 수 있는 Cross-cutting Concern을 어떻게 꽂느냐에 따라서
Before, After retrunning, After throwing, Around 네가지로 분류함.
만약 앞에만 삽입되는 코드라고 하면 Before형태로 준비된 함수를 구현하는 것이 쉬움.
xml 파일에서 logBeforeAdicve라고 하는 bean id를 생성하고, class는 spring.aop.advice.LogBeforeAdvice로 한다.
그리고 참조하는 value값에 bean id인 logBeforeAdvice를 적는다. 그럼 logAroudAdvice, logBeforeAdive 둘 다 참조한다.
해당 패키지에 LogBeforeAdvice 클래스를 생성한다.
그 후 생성된 클래스 명에 implements MethodBe까지 치고 (ctrl+space)를 한다 .
그 후 빨간 밑줄이 뜨는 LogBeforeAdvice에 마우스를 갖다대어 add umimplements methods를 클릭한다.
그럼 @Override가 생성되면서 위의 사진처럼 생성될 것이다.
그 후 "앞에서 실행될 로직"을 출력한다.
- 만약 구현하는 데 있어서 현재 호출되고 있는 함수의 이름을 뽑아내거나 또는 그 함수가 갖고 있는 파라미터를 얻고 싶다고 하면 method, args 파라미터들의 정보를 쓰면 된다.
- 만약 target에 대한 객체를 이용하고 싶다고 하면 target을 써도 된다.
- 하지만 그것들이 필요없다면 필요한 부분만 단지 사용해서 작성하면 됨.
- 이전의 LogAroundAdvice에서는 target에 해당되는 함수를 호출해주는 작업이 들어가야만 했음. 하지만 이번엔 x
-설정은 다 끝났기 때문에 실행을 한다면 total, avg중 뭘 호출하든 target이 갖고 있는 메소드를 호출할 경우에는 log가 출력 됨.
참고영상 : https://www.youtube.com/watch?v=oysjZMw9S6M&list=PLq8wAnVUcTFVUMCKI4CL_EHWW5ykPnL0z&index=5
'개발공부 > Spring' 카테고리의 다른 글
[spring] Point Cut(Weaving, Join Point) (0) | 2022.01.26 |
---|---|
[spring] After Returning /Throwing 어드바이스 구현하기 (0) | 2022.01.26 |
[spring] 스프링으로 AOP 구현해보기 - AroundAdvice (0) | 2022.01.26 |
[spring] AOP 자바 코드 이해하기 (0) | 2022.01.26 |
[spring] AOP(Aspect Oriented Programming)이란? (0) | 2022.01.26 |