gpt4 book ai didi

spring - 是否可以将一个方面编织到动态实例化的类中?

转载 作者:行者123 更新时间:2023-12-04 17:19:57 24 4
gpt4 key购买 nike

我使用 Spring 并且有一个方面环绕着一些类:

@Aspect
public class LoggingAspect{

@Around("execution(public * com.service.MyService.doStuff(..))")
public Object log(){
...
}
}

在上下文 xml 中:

<aop:aspectj-autoproxy/>
<bean id="loggingAspect" class="com.bla.bla.bla.LoggingAspect"/>

问题是 MyService 的实例是在运行时创建的,所以 Spring 在上下文初始化阶段对这个类一无所知。在这种情况下是否可以使用方面来包装使用 new(不是 Spring)实例化的类的方法调用?

最佳答案

如果我阅读the Spring docs是正确的,你这样做(对于 Spring 基于代理的编织):

ProxyFactory factory = new ProxyFactory(new SimplePojo());
factory.addInterface(Pojo.class);
factory.addAdvice(new RetryAdvice());

Pojo pojo = (Pojo) factory.getProxy();

或者像这样(对于 AspectJ 风格的编织):

AspectJProxyFactory factory = new AspectJProxyFactory(new SimplePojo()); 
factory.addAspect(new RetryAspect());

Pojo proxy = factory.getProxy();

(我通过我的 bean 配置驱动我所有的 AOP 编织,所以我不需要在实践中使用这种东西。)

关于spring - 是否可以将一个方面编织到动态实例化的类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5740908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com