java - 使用 JavaConfig 的 Spring Data Solr 存储库

标签 java spring maven solr

我正在尝试创建一个使用 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

enter image description here

Here we go with our code base without any errors.

enter image description here

关于java - 使用 JavaConfig 的 Spring Data Solr 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40770381/

相关文章:

java - mvn 提示 java 源,即使将使用所需的

maven - 参数资源的阴影 : Cannot find 'resource' in class org. apache.maven.plugins.shade.resource.ManifestResourceTransformer

java - Spring JpaRepository - 分离和附加实体

java - 单元/集成测试由通用方法组成的 dao

java - 使用 Spring 保护 REST url

java - 不同的spring配置文件角色

java - Tango:如何使用 Java 从 tango 设备获取深度帧

java - 在ubuntu上运行java文件时出现NoClassDefFoundError

java - Controller 单元测试无法 Autowiring 所需的 bean

javascript - 管理 Web 组件的依赖关系; JS、CSS/SASS 和模板文件