【发布时间】:2021-01-13 01:10:18
【问题描述】:
如何在原型作用域 bean 上应用 spring aop 方面
spring 方面是否不适用于原型作用域 bean? 我有一个带有几个构造函数参数的原型范围 bean。 bean 在运行时使用这些参数进行实例化。
我的spring配置是这样的-
@Configuration
@EnableAspectJAutoProxy
public class SpringConfiguration {
@Bean
@Scope("prototype")
public PrototypeBean prototypeBean(SomeDTO dtoArg1, OtherDTO dtoArg2) {
return new PrototypeBean(dtoArg1, dtoArg2);
}
@Bean
public TestAspect testAspect() {
return new TestAspect();
}
}
我是通过applicationContext获取代码中的bean-PrototypeBean,像这样-
applicationContext.getBean(PrototypeBean.class, dtoArg1, dtoArg2);
但令人惊讶的是,切面并未在原型 bean 的连接点方法的调用上执行。我确信我创建的切入点是正确的,因为在 Eclipse 中,aspectJ 插件在 joinPoint 方法上显示了 aspectJ 引用的可视标记,这表明切入点是正确的,但不确定为什么它在运行时没有被执行调用 PrototypeBean 的 joinpoint 方法。
我是否以不正确的方式接近容器以获取 bean,或者容器没有机会在此原型 bean 上编织建议?
感谢您对此提供任何帮助/建议。
【问题讨论】:
标签: java spring aspectj spring-aop aspect