spring-data-jpa & org.springFramework 兼容性



我最近更新了一个父pom文件,我们的(子)项目声明了该文件。在上述pom文件中,我将"org.springframework"依赖项(spring-webmvc,spring-web ...)从版本4.0.7.RELEASE更新为4.1.6.RELEASE。

在一个子项目/pom中,我正在使用org.springframework.data spring-data-jpa。在更新到父pom文件之前,我的测试通过了。更新后,我看到此错误:

Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg/springframework/core/env/Environment;
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:81)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1426)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1416)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:179)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:149)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:103)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:510)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)

然后我尝试将 spring-data-jpa 版本从 1.7.1.RELEASE 更新到 1.8.0.RELEASE,但错误消息是相同的。

我已经阅读了几篇帖子,建议存在依赖/jar 冲突,但没有解释这种冲突发生的位置以及如何解决它。据我所知,是org.springframework的变化导致了这种情况。

在我的情况下,类 org.springframework.data.repository.config.RepositoryBeanDefinitionParser 中的以下行:

public BeanDefinition parse(Element element, ParserContext parser) {
       XmlReaderContext readerContext = parser.getReaderContext();
       try {
           Environment e = readerContext.getEnvironment();

造成: java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment() .

RepositoryBeanDefinitionParser spring-data-commons依赖于 spring-data-jpa pom.xml 文件:

<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>spring-data-commons</artifactId>
<version>${springdata.commons}</version>
</dependency>

因此,当我将org.springframework.data:spring-data-jpa依赖项升级到更高版本的 1.9.2.RELEASE 时(同时拥有 4.1.0.RELEASE 的 spring-beans),我开始出现异常,因为我的XmlReaderContext没有方法getEnvironment() RepositoryBeanDefinitionParser.parse(Element element, ParserContext parser)方法所需的方法。

最新更新