AOP(1)
AOP
AOP(Aspect-Oriented Programming) 는 OOP를 보완하는 수단으로, 흩어진 Aspect 를 모듈화 할 수 있는 프로그래밍 기법이다.
즉, 여러 곳에서 쓰이는 공통 기능을 모듈화하고, 쓰이는 곳에 필요할 때 연결함으로써, 유지 보수 혹은 재사용에 용이하도록 프로그래밍 하는 것.
주요 개념
Aspect
여러 곳에서 쓰이는 코드(공통 부분)를 모듈화한 것
Target
Aspect 가 적용되는 곳
Advice
Aspect 에서 실질적인 기능에 대한 구현체
Joint point
Advice 가 Target 에 적용되는 시점
메서드 진입할 때, 생성자 호출할 때, 필드에서 값을 꺼낼 때 등등
Point cut
Joint point 의 상세 스펙을 정의한 것
AOP 구현체
- AspectJ
스프링 AOP
AOP 적용 방법
- 컴파일 (AspectJ)
- 로드 타임 (AspectJ)
- 런타임 (스프링 AOP)
스프링 AOP
특징
-
프록시 기반의 AOP 구현체
-
스프링 빈에만 AOP 를 적용할 수 있다.
-
동적 프록시 빈을 만들어 등록시켜준다.
빈 라이프사이클 중 실행되는 BeanPostProcessor 구현체를 구현함 AbstractAutoProxyCreator implements BeanPostProcessor
구현
먼저 다음 AOP 를 위해 다음 의존성을 추가한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
인터페이스 클래스를 빈으로 정의
public interface EventService {
public void created();
public void operation();
public void deleted();
}
다음 글()
출처 : https://dailyheumsi.tistory.com/202