当前位置: 首页 > 知识库问答 >
问题:

如何在原型范围bean上应用spring aop方面

盖夕
2023-03-14

如何在原型范围bean上应用spring aop方面

@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.getBean(PrototypeBean.class, dtoArg1, dtoArg2);

但令人惊讶的是,在调用原型bean的joinpoint方法时,方面并没有执行。我确信我创建的切入点是正确的,因为在eclipse中,aspectJ插件在joinPoint方法上显示了aspectJ引用的可视化标记,这表明切入点是正确的,但不确定为什么在运行时调用PrototypeBean的joinPoint方法时没有执行它。

我是以不正确的方式接近容器来获取bean,还是容器没有机会在这个原型bean上编织建议?

如能提供任何帮助/建议,将不胜感激。

共有1个答案

宋成天
2023-03-14

我在Spring Boot 2.3.4上尝试了同样的方法,结果效果很好。

这是回购款。确保为enableaspectjautoproxy提供了以下依赖项。

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <scope>compile</scope>
    </dependency>
 类似资料:
  • 我正在使用 Spring 3.1.1,在我的业务逻辑中,我有一个循环,每次迭代都需要一个新的 Spring bean(原型范围)实例。 最好的方法是什么?我是否必须创建自己的 BeanFactory 类,我可以将其注入一次到我的类中,并且每次都调用它来生成 bean?在查看 Spring 3 文档时,它似乎暗示我应该改用 ApplicationContext。但是,使用ApplicationCon

  • 我想知道ApplicationContext何时会在原型范围的bean上调用用@PreDestroy注释的方法? a)每当bean实例变得不可达时(例如。当ApplicationContext关闭时(例如调用close(),stop(),destroy())

  • 我正在学习Spring,我只是在玩豆子范围。 我将附上代码,然后描述我想做的事情。 到目前为止,我已经创建了一个 点类别: 我创建了一个三角形类,其中有3个Point类的实例: 以下是spring.xml: 这是主类: 所以,你会看到三个豆子的豆范围,,和是,但它们是的成员,其范围默认为Spring 因此,我的假设是,这应该不起作用,除非我能以某种方式在我的< code>Triangle类中获取<

  • 我能够测试在单个bean中自动生成一个原型bean只会创建一个原型bean。 作为一个解决方案,我读到可以为原型bean定义AOP范围的代理,或者使用Spring的查找方法注入。 这是我试过的- 测试类 我是不是漏了什么?此外,对greet()方法的调用返回null。

  • 本文向大家介绍单例和原型bean范围之间的区别。,包括了单例和原型bean范围之间的区别。的使用技巧和注意事项,需要的朋友参考一下 Spring框架支持五种类型的bean作用域- 辛格尔顿 原型 请求 届会 全球会议 根据春季文件- Singleton-每个Spring IoC容器返回一个bean实例。该单个实例存储在此类单例bean的高速缓存中,并且对该命名bean的所有后续请求和引用都返回该高