经过 12 小时的尝试,我似乎无法让 Spring加载时间编织在 Tomcat 上工作。
- 春天 4.2.1
- 休眠 4.3.11
- 雄猫 8.09
我正在尝试@Entity
自动接线。
weaver
输出总是说:
not weaving 'mypackage.MyEntity'
除非我也在上面使用@Configuration
注释。然后它会编织,但我会得到SPRIGNCGLIB
所有属性所在的代理null
。
如果我删除@Configuration
注释(我认为它不应该在那里),那么我不会得到任何编织并且@Autowired
属性总是null
.
这是我的配置:
applicationContext-beans.xml
<context:component-scan base-package="my.package" />
<context:spring-configured />
<context:load-time-weaver />
类/META-INF/aop.xml
<aspectj>
<weaver options="-Xreweavable">
<include within="my.package.*"/>
</weaver>
<aspects>
<aspect name="org.springframework.beans.factory.aspectj.AbstractInterfaceDrivenDependencyInjectionAspect"/>
</aspects>
我的实体.java
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;
}
}
上下文.xml
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>
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
但它没有帮助,根据Spring LTW 文档,context.xml
片段是执行此操作的首选方式。
有没有人有任何想法?