Spring Framework/Aspect Oriented Programming with Spring

Programmatic Creation of @AspectJ Proxies

헬로우월드 2024. 11. 15. 23:25

<aop:config> 또는 <aop:aspectj-autoproxy>를 사용하여 설정에서 aspect를 선언하는 것 외에도, 타겟 객체를 어드바이스하는 프록시를 프로그래밍 방식으로 생성할 수도 있습니다. Spring AOP API에 대한 전체 자세한 내용은 다음 장을 참조하세요. 여기서는 @AspectJ aspect를 사용하여 자동으로 프록시를 생성하는 기능에 중점을 두고 설명하겠습니다.

org.springframework.aop.aspectj.annotation.AspectJProxyFactory 클래스를 사용하여 하나 이상의 @AspectJ aspect에 의해 어드바이스된 타겟 객체에 대한 프록시를 생성할 수 있습니다. 이 클래스의 기본 사용법은 매우 간단하며, 다음 예제가 이를 보여줍니다:

// 주어진 타겟 객체에 대한 프록시를 생성할 수 있는 팩토리를 생성합니다.
AspectJProxyFactory factory = new AspectJProxyFactory(targetObject);

// aspect를 추가합니다. 클래스는 @AspectJ aspect여야 합니다.
// 필요한 경우 다른 aspect로 여러 번 이 메서드를 호출할 수 있습니다.
factory.addAspect(SecurityManager.class);

// 기존 aspect 인스턴스를 추가할 수도 있습니다. 제공된 객체의 타입은
// @AspectJ aspect여야 합니다.
factory.addAspect(usageTracker);

// 이제 프록시 객체를 가져옵니다...
MyInterfaceType proxy = factory.getProxy();

자세한 내용은 Javadoc을 참조하세요.