1. AOP란?
- Spring AOP는 스프링 프레임워크에서 제공하는 기능 중 하나로 관점 지향 프로그래밍을 지원하는 기술
- 로깅, 보안, 트랜잭션 관리 등과 같은 공통적인 관심사를 모듈화 하여 코드 중복을 줄이고 유지 보수성을 향상
- 여러 개의 클래스에서 반복해서 사용하는 코드가 있다면 해당 코드를 모듈화 하여 공통 관심사로 분리함
- 핵심 관심사 : 각 객체가 가져야 할 본래의 기능
- 공통 관심사 : 여러 객체에서 공통적으로 사용되는 코드
2. 언제 사용되는지
클래스 A에서 주황색 블록을 수정을 하게 되면 클래스 B, C에서도 수정이 필요함
AOP 사용 후 ) Aspect X에서는 공통 관심사인 주황색 블록을 묶어서 모듈화를 시켜서 코드의 재 사용성과 유지 보수성을 강화
3. 관련 용어
용어 | 설명 |
Aspect | - 공통적인 기능들을 모듈화 한것을 의미합니다. |
Target | - Aspect가 적용될 대상을 의미하며 메소드, 클래스 등이 이에 해당 됩니다. |
Join point | - Aspect가 적용될 수 있는 시점을 의미하며 메소드 실행 전, 후 등이 될 수 있습니다. |
Advice | - Aspect의 기능을 정의한 것으로 메서드의 실행 전, 후, 예외 처리 발생 시 실행되는 코드를 의미합니다. |
Point cut | - Advice를 적용할 메소드의 범위를 지정하는 것을 의미합니다. |
4. 주요 어노테이션
메서드 | 설명 |
@Aspect | 해당 클래스를 Aspect로 사용하겠다는 것을 명시합니다. |
@Before | 대상 “메서드”가 실행되기 전에 Advice를 실행합니다. |
@AfterReturning | 대상 “메서드”가 정상적으로 실행되고 반환된 후에 Advice를 실행합니다. |
@AfterThrowing | 대상 “메서드에서 예외가 발생”했을 때 Advice를 실행합니다. |
@After | 대상 “메서드”가 실행된 후에 Advice를 실행합니다. |
@Around | 대상 “메서드” 실행 전, 후 또는 예외 발생 시에 Advice를 실행합니다. |
'TIL' 카테고리의 다른 글
[TIL] 20240226 Spring JPA Query method (1) | 2024.02.26 |
---|---|
[TIL] 20240221 Junit Mock 객체 / Stubbing (0) | 2024.02.21 |
[TIL] 데이터베이스 식별/비식별 관계 (0) | 2024.02.07 |
[TIL] 20240205 Jwt accessToken, refreshToken (0) | 2024.02.05 |
[TIL] 20240202 Spring ResponseEntity (0) | 2024.02.02 |