使用 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
),允许您添加其他增强类型,例如 before 和 throws 增强。AdvisedSupport
是 ProxyFactory
和 ProxyFactoryBean
的超类。
在大多数应用程序中,将 AOP 代理创建与 IoC 框架集成是最佳实践。我们建议您将配置从 AOP 的 Java 代码中分离,就像您通常应该做的那样。 |