跳到主要内容

使用 ProxyFactory 程序化创建 AOP 代理

ChatGPT-4o-mini 中英对照 Creating AOP Proxies Programmatically with the ProxyFactory Creating AOP Proxies Programmatically with the ProxyFactory

使用 Spring 程序化地创建 AOP 代理是很简单的。这使您可以在不依赖 Spring IoC 的情况下使用 Spring AOP。

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

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

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

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

ProxyFactory 上还有一些便利方法(从 AdvisedSupport 继承)可以让你添加其他类型的通知,例如前置通知和异常通知。AdvisedSupportProxyFactoryProxyFactoryBean 的超类。

提示

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