我正在尝试创建一个使用 solr 存储库的 SpringBoot 应用程序。我正在关注本教程:
http://docs.spring.io/spring-data/solr/docs/current/reference/html/#solr.repositories
其中表示使用以下类配置我的应用程序(示例 43):
@Configuration
@EnableSolrRepositories
class ApplicationConfig {
@Bean
public SolrClient solrClient() {
EmbeddedSolrServerFactory factory = new EmbeddedSolrServerFactory("classpath:com/acme/solr");
return factory.getSolrServer(); // getSolrServer does not exist
}
@Bean
public SolrOperations solrTemplate() {
return new SolrTemplate(solrClient());
}
}
问题是,如果我这样做,它不会将 getSolrServer()
识别为 factory
的方法。事实上,如果你看看 most recent API对于 EmbeddedSolrServerFactory
您找不到该方法,但它显然存在于 previous version 中同一个类(class)。
也许出于某种原因,它从 getSolrServer
重命名为 getSolrClient
,从一个版本到另一个版本。
这是我在 pom.xml 中的依赖项
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
无论如何,我尝试将 getSolrServer
更改为 getSolrClient
,但返回类型(即 SolrClient
)现在不兼容。如果我尝试返回 org.apache.solr.client.solrj.embedded.EmbeddedSolrServer,它会给我一个错误,因为它找不到 org.apache.solr.client.solrj.embedded...
使用此方法的另一个问题是 SolrTemplate
不需要 EmbeddedSolrServer
,因此这不是一个好的选择...
最佳答案
我使用的是 eclipse 而不是 spring suite,假设 spring suite 使用最新版本的 spring-boot-starter-data-solr ( 1.4.2 )
并且您需要在 pom 中添加 solr-core 5.x
的条目。
由于EmbeddedSolrServer
扩展了SolrClient
,遵循Java IS-A
关系,并且它应该与SolrClient兼容。该二进制文件是 solr-core 的一部分。
您的代码需要使用 getSolrClient
本身,并且它应该与 SolrClient
兼容
Dependencies in pom.xml is as follows
Here we go with our code base without any errors.
关于java - 使用 JavaConfig 的 Spring Data Solr 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40770381/