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>
출처: 스프링의정석 수업 강의자료