对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

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

使用 Spring 以编程方式创建 AOP 代理非常简单。这使得你可以在不依赖 Spring IoC 的情况下使用 Spring AOP。spring-doc.cadn.net.cn

目标对象所实现的接口会自动被代理。以下示例展示了为一个目标对象创建代理的过程,其中包含一个拦截器和一个通知器(advisor):spring-doc.cadn.net.cn

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 的对象。您可以像前面的示例那样,使用目标对象来创建它,也可以在另一个构造函数中指定要代理的接口。spring-doc.cadn.net.cn

您可以添加通知(以拦截器作为通知的一种特殊形式)、通知器,或同时添加两者,并在 ProxyFactory 的整个生命周期内对其进行操作。如果您添加了一个 IntroductionInterceptionAroundAdvisor,可使代理实现额外的接口。spring-doc.cadn.net.cn

ProxyFactory(继承自AdvisedSupport)也提供了一些便捷方法, 允许你添加其他类型的通知,例如前置通知(before advice)和异常通知(throws advice)。 AdvisedSupportProxyFactoryProxyFactoryBean 的共同父类。spring-doc.cadn.net.cn

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