2025/04/09 3

[Spring][AOP] 3. Advisor API

1. Advisor"어떤 시점에 어떤 부가기능을 실행할지"를 정의 (Advice + Pointcut을 묶은 객체)Aspect의 최소 단위 2. 구현체DefaultPointcutAdvisorAdvisor advisor = new DefaultPointcutAdvisor(pointcut, advice);기본 구현체Advice + Pointcut를 한 번에 묶어서 등록이 가능 3. Advice 혼합 사용다양한 타입들의 Advice 객체를  혼합해서 하나의 프록시에 등록할 수 있음 예제) ProxyFactory더보기더보기더보기MyService target = new MyServiceImpl();ProxyFactory factory = new ProxyFactory();factory.setTarget(target..

Spring/Spring 2025.04.09

[Spring][AOP] 2. Pointcut API

1. Spring Pointcut API어떤 Advice가 어떤 메서드에 적용될지를 결정하는 기준을 정의함 Pointcut 인터페이스public interface Pointcut { ClassFilter getClassFilter(); MethodMatcher getMethodMatcher();}Advice의 적용 대상을 지정클래스와 메서드 조건이 모두 만족될 때 적용됨 항목ClassFilterMethodMatcher역할Pointcut이 적용될 클래스를 필터링Pointcut이 적용될 메서드를 필터링평가 시점AOP 프록시 생성 시점정적: 프록시 생성 시동적: 메서드 호출 시마다 평가정적/동적 여부항상 정적정적 (isRuntime() == false) 동적 (isRuntime() == true)주..

Spring/Spring 2025.04.09

[Spring][AOP] 1. Advice API

1. Advice 생명 주기구분Per-Class (공유 인스턴스)Per-Instance (객체별 인스턴스)적용 방식모든 대상 객체에서 동일한 Advice 인스턴스 공유각 대상 객체마다 별도의 Advice 인스턴스 생성상태 관리StatelessStateful사용 사례- 트랜잭션 관리- 로깅- 보안 검사- Mixin 패턴 구현- Introduction (인터페이스 동적 추가)성능메모리 사용량이 적고 효율적객체마다 인스턴스 생성 → 메모리 오버헤드 가능성대상모든 메서드 호출에 공통 적용특정 객체에 한정된 확장 기능 적용Spring AOP 지원기본 방식 (JDK 동적 프록시/CGLIB)@Aspect(perthis, pertarget) 2. Advice 유형Advice 종류실행 시점반환값 변경예외 처리사용 목적 ..

Spring/Spring 2025.04.09