less than 1 minute read

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

Categories:

Updated: