Spring加载时编织没有检测用@configurable注释的类
我无法让AspectJ在我的主项目中使用@configurable注释的类上执行加载时间编织。 没有设置字段,也没有触及任何设置器。
我不认为配置本身存在问题,因为我已经解压缩了配置并在较小的沙箱项目上进行了测试。 只是为了它,我会把它包含在这个问题中。
所以,我想知道:
- 大项目中是否有任何可能阻碍Spring / AspectJ检测此特定类的内容?
- 有没有办法检查spring是否甚至意识到问题中的class级?
最后,无论我提取什么代码(请原谅混淆):
从配置XML:
(...)
而class级本身:
@Configurable public class ClassToBeWeaved { private InjectedBean injectedBean; @Required public void setInjectedBean() { ... } }
编辑:
好吧,事实certificate它由于循环依赖而无法正常工作。 哦,亲爱的,我喜欢处理遗留代码。 不过,我原来的问题仍然存在。
你可能忘记了“ 编织 ”。 添加-javaagent:path/to/aspectjweaver.jar
或-javaagent:path/to/spring-agent.jar
到你的comman行。
我还建议你@Autowire
你的依赖,而不是明确地注入它。
我相信LTW需要在类路径上使用META-INF / aop.xml。 它应该看起来像:
你有超过1个spring XML文件吗? 我相信我有一个问题
一些提示你的问题。
为了使加载时间编织与Spring一起工作,不仅需要正确配置aop.xml ,还需要使用spring-instrument.jar和spring-aspects.jar 。
这些jar文件包含自己的aop.xml ,声明要处理的Spring方面:
- @Transactional支持
- @Configurable支持
- JPAexception翻译支持
- @Async注释用于调度支持
在后台发生了什么?
使用AspectJ加载时编织时,@ Transaction和@Configurable实现不再基于JDK代理或CGLIB代理,而是基于实际的AspectJ 方面 。
要启用这些真实方面,您需要其他jar文件。 jar还在自己的aop.xml中包含这些方面的声明
有关如何将Spring与AspectJ集成的更多详细信息