Spring 弹簧负载时间编织
经过12个小时的尝试,我似乎无法在Tomcat上实现弹簧负载时间编织Spring 弹簧负载时间编织,spring,hibernate,configurable,load-time-weaving,Spring,Hibernate,Configurable,Load Time Weaving,经过12个小时的尝试,我似乎无法在Tomcat上实现弹簧负载时间编织 春季4.2.1 冬眠4.3.11 Tomcat 8.09 我正在尝试获取一个@实体自动连线 weaver输出总是显示: not weaving 'mypackage.MyEntity' 除非我在其上也使用了@配置注释。然后它将进行编织,但我得到一个SPRIGNCGLIB代理,其中所有属性都是null 如果我删除@Configuration注释(我认为它无论如何都不应该在那里),那么我就不会得到任何编织,@Autowire
- 春季4.2.1
- 冬眠4.3.11
- Tomcat 8.09
@实体
自动连线
weaver
输出总是显示:
not weaving 'mypackage.MyEntity'
除非我在其上也使用了@配置
注释。然后它将进行编织,但我得到一个SPRIGNCGLIB
代理,其中所有属性都是null
如果我删除@Configuration
注释(我认为它无论如何都不应该在那里),那么我就不会得到任何编织,@Autowired
属性总是null
这是我的配置:
applicationContext-beans.xml
context.xml
Tomcatlib
文件夹有(我不确定它是否需要这两个):
- spring-instrument-4.2.1.RELEASE.jar
- spring-tomcat-weaver-2.5.6.SEC03.jar
WEB-INF/lib
文件夹具有:
- aspectjweaver-1.8.6.jar
- spring-aop-4.2.1.RELEASE.jar
- spring-aspects-4.2.1.RELEASE.jar
-javaagent:D:/my/path/to/server/apache-tomcat-8.0.9/lib/spring-instrument-4.2.1.RELEASE.jar
但是它没有帮助,根据上下文,xml片段是实现这一点的首选方法
有人有什么想法吗?你究竟为什么会有一个2.5.6罐子在你的道路上?您正在混合一个框架的不同版本,永远不要这样做。。。还要删除
aop.xml
,因为Spring已经提供了一个包含所需方面的方面,所以这里引用的也是错误的方面(基类不是实际的方面)。最后要说的是,加载时编织和@可配置
是两种不同的野兽(尽管其中一种扩展了另一种)。如果要将依赖项注入到非托管bean中,则应该能够在不使用
的情况下实现。您需要参考指南。
<context:component-scan base-package="my.package" />
<context:spring-configured />
<context:load-time-weaver />
<aspectj>
<weaver options="-Xreweavable">
<include within="my.package.*"/>
</weaver>
<aspects>
<aspect name="org.springframework.beans.factory.aspectj.AbstractInterfaceDrivenDependencyInjectionAspect"/>
</aspects>
package my.package;
@Entity
@Table(name = "user")
@Configurable
public class User {
private Encrypter encrypter; // THE CLASS I WANT INJECTED
@Autowired
public void setEncrypter(Encrypter encrypter) {
this.encrypter = encrypter;
}
}
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>