Spring

AOP(Aspect Oriented Programming)

hrming 2022. 5. 30. 19:05

AOP(Aspect Oriented Programming)

: 관점 지향 프로그래밍, 횡단 관심사, cross cutting concerns

: 부가 기능(advice)를 동적으로 추가해주는 기술

: 메서드의 시작 또는 끝에 자동으로 코드(advice)를 추가

 

1. AOP관련 용어

용어 설명
target advice가 추가될 객체
advice target에 동적으로 추가될 부가 기능(코드)
join point advice가 추가(join)될 대상(메서드)
pointcut join point들을 정의한 패턴. 예) execution(* com.fastcampus.*.*(..))
proxy target에 advice가 동적으로 추가되어 생성된 객체
weaving target에 advice를 추가해서 proxy를 생성하는 것

 

2. Advice의 종류

종류 애너테이션 설명
around advice @Around 메서드의 시작 부분에 추가되는 부가 기능
before advice @Before 메서드의 시작 부분에 추가되는 부가 기능
after advice @After 메서드의 부분에 추가되는 부가 기능
after returning @AfterReturning 예외가 발생하지 않았을 때, 실행되는 부가 기능 (try - catch)
after throwing @AfterThrowing 예외가 발생했을 때, 실행되는 부가 기능 (try - catch)

 

AOP 기능을 사용하기 위해 필요한 Library (Maven repository)


<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-aop</artifactId>
   <version>${org.springframework-version}</version>
</dependency>

<!-- AspectJ -->
<dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjrt</artifactId>
   <version>${org.aspectj-version}</version>
</dependency>


<dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjweaver</artifactId>
   <version>1.9.7</version>
   <scope>runtime</scope>
</dependency>

 

출처: 스프링의정석 수업 강의자료