java – AspectJ加载时编织不能在Spring bean上工作
我正在开发一个项目,该项目使用
Spring配置的
Java(而不是xml)风格来连接依赖项.它还具有应通过AspectJ编织到所需方法(通过注释)的分析逻辑.设置工作正常,我可以看到我所需的包中的类被编织,并且可以从中记录分析信息.
问题是编织对@Bean类不起作用.我通过以下方式在aop.xml中启用了调试: <weaver options="-XnoInline -Xreweavable -verbose -debug -showWeaveInfo"> 我可以看到我所需的包中的类被编织,但不是配置中的bean.如果我直接实例化类(不注入它们),编织工作. 不幸的是,我不能在这里发布真实的代码,但这是一个愚蠢的例子: @Configuration @EnableLoadTimeWeaving(aspectjWeaving = EnableLoadTimeWeaving.AspectJWeaving.ENABLED) public class MySpringConfig { @Bean AnnotatedClass1 annotatedClass1() { return new AnnotatedClass1(new AnnotatedClass2()); } } AnnotatedClass1和AnnotatedClass2存在于同一个包中,编织工作在直接实例化的那个上,而不是bean返回的那个. 我已经搜索了the Spring AOP docs,但我似乎无法找到与此相关的任何内容.你需要为自动代理做一些魔术,以及SpringAOP的一些限制,但加载时间编织应该尽可能地工作 – 例如我试过私有方法并且它有效. 解决方法
问题是返回类型 – 如果我这样做:
@Bean Object annotatedClass1() { return new AnnotatedClass1(new AnnotatedClass2()); } 编织也开始为豆子工作.我最初的假设是它与Spring缓存bean有关,而不是使用weaved版本,但这没有意义,因为: >加载时间编织应该起作用,以及…类加载时间:).然后,该方法返回什么并不重要,该类应具有方面. 这是我第一次使用这些东西,所以我可能会误解事物.如果有人能解释为什么@Bean方法的返回类型与编织有关,我很乐意接受你的答案,而不是这个. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 我可以在当前编辑器中创建一个文件打开的工作集吗?
- 浅谈java Collection中的排序问题
- java – 如何设置为json而不是xml在jersey?
- 有没有人现在使用Java-config的Spring框架?
- java – 如何在Oracle中检查JDK版本?
- JavaFx无法加载@ font-face字体,因为com.sun.javafx.css.St
- java – 在服务中实现线程池
- How to Read, Write XLSX File in Java - Apach POI Exampl
- java 数据结构中栈和队列的实例详解
- java – 尝试使用phpass检查wordpress密码哈希