0

经过 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片段是执行此操作的首选方式。

有没有人有任何想法?

4

0 回答 0