java - 如何在 Spring 样本宠物诊所中使用JPA?

标签 java spring orm jpa

我正在学习 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

任何回复都会很有帮助。

最佳答案

默认的 Tomcat 类加载器不支持加载时编织所需的类转换。您需要使用 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 提供程序。请参阅下面的相关问题。

另见

相关问题

引用资料

关于java - 如何在 Spring 样本宠物诊所中使用JPA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3487588/

相关文章:

java - @Component Spring注解标准作用域

java - 如何从另一个 map 迭代一个 map ?

java - Spring MVC : No mapping found for HTTP request with URI [/hello. jsp]

java - 是否需要测试公共(public)内部类?

java - 为什么我不能以第二种方式使用这个程序

java - 使用 Hibernate 时集成测试 native SQL 查询

java - Spring/Rest @RequestBody 字符编码

java - 更新多个 EC2 实例的日志级别

entity-framework - EF vs NHibernate vs Dapper ORM

java - Netbeans 创建 "JPA Controller classes from entity classes"