【问题标题】:Spring AOP not working with @Configuration and @EnableAspectJAutoProxySpring AOP 不适用于 @Configuration 和 @EnableAspectJAutoProxy
【发布时间】:2018-12-13 14:16:09
【问题描述】:

在我的应用程序中,我在控制器和 DAO 层上使用 AOP - 它可以正常工作。

但是,在我的服务层上,它是在 @Configuration 类(作为 bean)中创建的,它不起作用。

所以我的问题是控制器和 DAO 层的切入点和建议有效 - 但不适用于服务层。

在互联网上阅读 - 我发现我应该添加 @EnableAspectJAutoProxy 注释 - 但它仍然不适用于此。

旁注:

@Bean("nameOfResolver")
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS) 

不起作用的类是这样的

public class ResolveImpl implements Resolve {

private static final Logger LOGGER = LoggerFactory.getLogger(ResolveImpl.class);

@CustomAnnotation(user = "user")
public TestClass createTestClass(String user) {
    ......
    }
}

我的 bean 中有这个,它解析应该返回哪个 bean。

非常感谢您的帮助

【问题讨论】:

  • 在服务层显示它不起作用的类
  • 我已编辑帖子以显示服务层(已更改名称)
  • 你在课堂上添加了@Service 吗? Spring 是如何管理的?
  • 我已将@Service 添加到服务类的接口,但仍然是同样的问题。它由定义 bean 并将其返回到资源层中的“Autowired”的配置类管理。
  • 应该在实现类ResolveImpl,见stackoverflow.com/questions/16351780/…

标签: spring configuration aop spring-aop


【解决方案1】:

好的,我终于找到了解决问题的方法。 由于 Spring AOP 使用代理机制,我有一个方法可以调用同一类中的 @CustomAnnotation(user = "user") 方法。这会导致代理机制不被触发。 查看 Spring AOP not working for method call inside another method 解释一下

【讨论】:

  • 这就是为什么您应该始终在问题中分享MCVE 而不仅仅是包含认为是问题关键部分的不连贯代码sn-ps。如果您遇到问题并且不知道答案,请让其他人(您需要帮助的人)通过显示可编译和可执行的内容来决定,重现问题。在这种情况下,除了你自己之外,没有人有机会回答这个问题。
猜你喜欢
  • 2014-02-26
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多