Contents
- 스프링 AOP의 특징
- 어노테이션 기반의 AOP
스프링 AOP 의 특징
프록시 기반의 AOP 구현
스프링 빈에만 AOP 를 적용할 수 있다.
프록시 패턴
프록시 패턴에는 인터페이스가 있다.
클라이언트는 이 인터페이스 타입으로 Proxy 객체를 사용하게 된다.
Proxy객체가 실제 객체를 감싸서 실행을 하게 된다.
근데 이렇게 프록시 패턴을 직접 구현을 하면 여러 문제점이 생긴다
-프록시 패턴을 직접 구현하면 생기는 문제점
- 매번 이런 프록시 클래스를 작성해야하나?
- 한 Real Subject 가 아니라 여러 클래스에 advice를 적용하고 싶다면..?
위 같은 문제들이 생겨났고
이걸 해결하기 위해 등장한게 Spring AOP 다
스프링 AOP 에서는 동적으로 프록시를 생성해서 이런 문제들을 해결해줬다.
스프링이 동적 프록시를 만드는 방법은 토비 스프링을 참고하자
-AbstractAutoProxyContainer
어노테이션 기반의 AOP
그러면 이제 스프링 부트에서 어떻게 AOP를 쓰는지 알아보자
먼저 의존성을 추가해야 한다.
dependency 에
Spring-boot-starter-aop 를 설치해준다.
Aspect 를 생성한 후 @Aspect 를 붙여준다.
advice 를 만들어 준다
Around 는 어드바이스의 종류 around 는 메소드 실행 전, 후 에 모두 넣을 수 있는 강력한 어드바이스의 종류다
execution은 pointcut의 종류
포인트컷의 정의
- execution
- @annotation
- bean
어드바이스의 정의
- Before
- AfterReturning
- AfterThrowing
- Around
AOP를 Annotaion 으로 만드는방법
포인트컷에 어노테이션을 넣기위해,
어노테이션을 만들때,
@RetentionPolicy 란?
이 어노테이션 정보를 얼마나 유지할까냐다
CLASS 면 클래스 파일까지 유지. 즉, 바이트 코드에서 이 어노테이션 정보가 남아있다는것, 이게 기본값이다.
이 어노테이션을 메소드 위에 어노테이션을 붙여주면 된다.
'Spring > Core' 카테고리의 다른 글
Spring Core - AOP의 개념 (0) | 2020.04.18 |
---|---|
Spring Core - Validation, Data binding 추상화 (0) | 2020.04.18 |
Spring Core - Resource 추상화 (0) | 2020.04.18 |
Spring Core - Application Context 의 기능들 (0) | 2020.04.17 |
Spring Core - bean 의 스코프 (0) | 2020.04.16 |