我使用Spring Boot(1.4.1)的Spring Data JPA启动程序。它包含Spring Data JPA 1.10.3。但是,我需要使用@DomainEvents
此版本的spring数据中尚不存在的注释。当我尝试添加最新版本的Spring Data JPA时,我的应用程序运行时出现错误。
我的pom示例:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
...
</dependencies>
当我尝试添加像这样的最新版本的Spring Data JPA时:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.11.6.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
启动我的应用程序时会出错。像这样的错误:
Caused by: java.lang.NoSuchMethodException: org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.<init>()
at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_121]
at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[na:1.8.0_121]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
... 53 common frames omitted
如何使用较新版本的Spring Data JPA?我需要@DomainEvents
在我的应用程序中。谢谢!
有多种方法可以为猫皮化,但都有不同的优点和缺点:
总体上最安全的方法是升级到Spring Boot的最新版本。我们通常建议使用当前主要版本的最新次要版本。您的情况是1.5是最新的未成年人,因此我们建议升级到该版本(当前为1.5.6)。通常,只需更改您使用的父pom的版本号即可实现。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
以前方法的替代方法是保留您所使用的Boot版本,但有选择地升级第三方依赖项。首选的方法是检查spring-boot-dependencies中存在哪个版本的占位符。然后,您只需要在项目中重新声明属性并调整版本。对于Spring Data,将是:
<properties>
<spring-data-releasetrain.version>Ingalls-SR6<spring-data-releasetrain.verion>
</properties>
如果使用Spring Data,则要在此处一次升级整个发行版,这样,即使您只升级一个模块,也不会在内部遇到Spring Data模块之间的不兼容性。这是建议通过“按属性升级”而不是在显式版本中显式重新声明依赖项的主要原因之一(在某些情况下,后者仍然是最后的选择)。
在实践中,我通常尝试以下步骤:
2和3可能是可互换的,具体取决于您个人的喜好或为团队定义的依赖性升级策略。
一般来说,最好注意Boot版本,并定期尝试将项目干式升级到较新的版本,但不一定要将升级版本交付生产。这样您就可以评估升级的风险,并估计需要进行的工作量。避免升级基本上只会使它们更加痛苦,但是,是的,有时由于政治原因或升级在新版本中遇到问题,有时无法立即进行升级。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句