Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 弹簧负载时间编织_Spring_Hibernate_Configurable_Load Time Weaving - Fatal编程技术网

Spring 弹簧负载时间编织

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

经过12个小时的尝试,我似乎无法在Tomcat上实现弹簧负载时间编织

  • 春季4.2.1
  • 冬眠4.3.11
  • Tomcat 8.09
我正在尝试获取一个
@实体
自动连线

weaver
输出总是显示:

not weaving 'mypackage.MyEntity'
除非我在其上也使用了
@配置
注释。然后它将进行编织,但我得到一个
SPRIGNCGLIB
代理,其中所有属性都是
null

如果我删除
@Configuration
注释(我认为它无论如何都不应该在那里),那么我就不会得到任何编织,
@Autowired
属性总是
null

这是我的配置:

applicationContext-beans.xml

context.xml


Tomcat
lib
文件夹有(我不确定它是否需要这两个):

  • spring-instrument-4.2.1.RELEASE.jar
  • spring-tomcat-weaver-2.5.6.SEC03.jar
apps
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"/>