728x90
반응형
AOP
Aspect Oriented Programing
핵심 기능들을 수행할 때 필요한 공통적인 부가 기능들(예: 로깅, 트랜잭션, 보안 등)과 같은 '횡단 관심(Crosscutting Concerns)'을 핵심 기능에서 분리하여 따로 모듈화하여 관리하는 것이다. 공통&부가기능을 따로 분리해서 관리하면 중복 코드를 작성하지 않아도 되고 유지보수도 용이하다. (따로 관리하지 않고 흩어져 있으면 변경이 필요할 때 일일이 수정해줘야 함)
AOP 관련 용어
- Target - 부가 기능을 부여할 대상이 되는 (핵심 기능을 담은) 클래스
- Aspect - AOP의 기본 모듈. 부가 기능을 정의한 Advice, 어디에 적용할지를 결정하는 PointCut으로 구성
- Advice - 부가 기능을 정의한 구현체
- Joint Point - 어드바이스가 적용될 수 있는 위치. 스프링에서는 메소드만 가능
- PointCut - 부가 기능을 적용할 대상이 되는 메소드를 선정하는 기능
- Proxy - 부가 기능을 제공하는 오브젝트. DI를 통해 타겟 대신 클라이언트에 주입됨. 클라이언트의 메소드 호출을 대신 받아 타겟에 위임하여 부가 기능을 부여한다.
- Introduction - 타겟 클래스에 추가적인 메소드나 필드를 추가하는 기능
- weaving - 어드바이스(부가 기능 구현체)를 핵심 로직(타겟) 코드에 적용하는 것
Spring AOP 어노테이션
- @Aspect - Aspect인 클래스에 명시
- @Component - Aspect를 스프링 빈으로 등록
- @PointCut - 부가 기능이 적용될 대상의 조건을 명시
@Aspect
@Component
public class TestAOP {
@Pointcut("execution(* com.test.springAOP.aop.controller..*.*(..))")
private void cut() {
}
}
[Pointcut 문법]
- 요약
728x90
반응형
'Spring' 카테고리의 다른 글
웹 서버 - 외장서버 vs 내장서버 (0) | 2023.05.21 |
---|---|
XSS Filter 적용하기 (lucy-xss-servlet-filter) (0) | 2023.04.25 |
application.properties VS application.yml (0) | 2023.04.24 |
스프링, 스프링 부트의 등장 (0) | 2023.03.05 |
스프링 부트의 핵심 기능 (0) | 2023.03.04 |