使用 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 框架集成是最佳实践。我们建议您像通常一样,将 AOP 的配置从 Java 代码中外部化。