如何在Spring示例Petclinic中使用JPA?

4

我正在学习Spring的示例。在petclinic项目中,默认使用jdbc。我将以下行更改为jpa,但无法再运行它了。

/WEB-INF/spring/applicationContext-jpa.xml

以下是错误信息:

Caused by: java.lang.IllegalStateException: ClassLoader [org.apache.catalina.loader.WebappClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:spring-agent.jar
    at org.springframework.context.weaving.DefaultContextLoadTimeWeaver.setBeanClassLoader(DefaultContextLoadTimeWeaver.java:83)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1418)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1389)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
    ... 35 more

任何回应都将非常有帮助。
1个回答

7

默认的Tomcat类加载器不支持Load-Time Weaving所需的类转换。您需要使用Spring提供的类加载器。

首先,将org.springframework.instrument-3.0.0.RELEASE.jar复制到您的Tomcat安装目录下的lib文件夹中。

然后修改src/main/webapp/META-INF/context.xml文件并取消以下行的注释:

<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>

或者你可以放弃使用LTW,改用Hibernate作为JPA提供程序。请参见下面的相关问题。

另请参阅

相关问题

参考资料


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接