使用ProxyFactory以编程方式创建AOP代理

使用Spring以编程方式创建AOP代理非常容易。这使您可以在不依赖Spring IoC的情况下使用Spring AOP。

目标对象实现的接口会自动被代理。以下示例展示了为目标对象创建代理的过程,其中包含一个拦截器和一个顾问:

  • Java

  • Kotlin

ProxyFactory factory = new ProxyFactory(myBusinessInterfaceImpl);
factory.addAdvice(myMethodInterceptor);
factory.addAdvisor(myAdvisor);
MyBusinessInterface tb = (MyBusinessInterface) factory.getProxy();
val factory = ProxyFactory(myBusinessInterfaceImpl)
factory.addAdvice(myMethodInterceptor)
factory.addAdvisor(myAdvisor)
val tb = factory.proxy as MyBusinessInterface

第一步是构造一个类型为org.springframework.aop.framework.ProxyFactory的对象。您可以像前面的示例一样使用目标对象创建它,也可以在另一个构造函数中指定要被代理的接口。

您可以添加建议(拦截器作为一种特殊类型的建议)、顾问或两者,并在ProxyFactory的生命周期内对它们进行操作。如果添加了IntroductionInterceptionAroundAdvisor,则可以使代理实现额外的接口。

ProxyFactory上还有方便的方法(从AdvisedSupport继承),让您添加其他类型的建议,例如前置和异常抛出建议。AdvisedSupportProxyFactoryProxyFactoryBean的超类。

在大多数应用程序中,将AOP代理创建与IoC框架集成是最佳实践。我们建议您将配置从Java代码中外部化使用AOP,这通常是一个好习惯。