使用@AspectJ代理的编程创建
除了通过使用<aop:config>
或<aop:aspectj-autoproxy>
在配置中声明切面外,还可以通过编程方式创建通知目标对象的代理。有关Spring的AOP API的完整详细信息,请参阅下一章。在这里,我们希望专注于使用@AspectJ切面自动创建代理的能力。
您可以使用org.springframework.aop.aspectj.annotation.AspectJProxyFactory
类为一个或多个@AspectJ切面通知的目标对象创建代理。该类的基本用法非常简单,如下例所示:
-
Java
-
Kotlin
// 创建一个可以为给定目标对象生成代理的工厂
AspectJProxyFactory factory = new AspectJProxyFactory(targetObject);
// 添加一个切面,该类必须是@AspectJ切面
// 您可以根据需要多次调用此方法,使用不同的切面
factory.addAspect(SecurityManager.class);
// 您还可以添加现有的切面实例,提供的对象的类型必须是@AspectJ切面
factory.addAspect(usageTracker);
// 现在获取代理对象...
MyInterfaceType proxy = factory.getProxy();
// 创建一个可以为给定目标对象生成代理的工厂
val factory = AspectJProxyFactory(targetObject)
// 添加一个切面,该类必须是@AspectJ切面
// 您可以根据需要多次调用此方法,使用不同的切面
factory.addAspect(SecurityManager::class.java)
// 您还可以添加现有的切面实例,提供的对象的类型必须是@AspectJ切面
factory.addAspect(usageTracker)
// 现在获取代理对象...
val proxy = factory.getProxy<Any>()
有关更多信息,请参阅javadoc。