使用新版本的Spring数据Solr和Spring启动

时间:2016-01-22 14:39:43

标签: spring-boot spring-data-solr

我在Spring启动应用程序(1.2.7)中使用Spring Data Solr。现在,因为Spring Data Solr Precedence for Custom Repository我必须至少将Spring Data Solr更新到1.4.x,而它目前在1.3.x上。

但是,如果我明确添加以下依赖项:

<dependency>
   <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-solr</artifactId>
    <version>1.4.2.RELEASE</version>
</dependency>

我运行应用程序,得到以下异常:

Caused by: java.lang.NoClassDefFoundError: org/springframework/data/mapping/PersistentPropertyAccessor
    at org.springframework.data.solr.core.SolrTemplate.getDefaultSolrConverter(SolrTemplate.java:573)
    at org.springframework.data.solr.core.SolrTemplate.afterPropertiesSet(SolrTemplate.java:622)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
    ... 61 more
Caused by: java.lang.ClassNotFoundException: org.springframework.data.mapping.PersistentPropertyAccessor
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 65 more

我知道您通常应该信任Spring启动本身的依赖关系管理,但这意味着您无法使用条件在Solr查询的某些部分放置括号,这非常关键。

1 个答案:

答案 0 :(得分:2)

Spring Data作为一组模块发布,这些模块都旨在协同工作。只需升级spring-data-solr,您就可以尝试使用旧版本的所有Spring Data依赖项。我建议升级所有Spring Data,以便获得一致的版本。

Spring Data Fowler版本系列包含Spring Data Solr 1.4.x,SR2包含Spring Data Solr 1.4.2。假设您使用spring-boot-starter-parent作为您的pom的父级,您可以通过覆盖spring-data-releasetrain.version属性来使用此版本:

<properties>
    <spring-data-releasetrain.version>Fowler-SR2</<spring-data-releasetrain.version>
</properties>