【发布时间】:2019-01-29 13:37:43
【问题描述】:
几次前,我的任务是在同一个应用程序中使用两个独立的 Apache Solr 实例。我试图找到一些信息,但无济于事。本文是关于如何配置对几个独立的 Apache Solr 的访问,并使用 Spring Data 通过不同的存储库访问它们。
Solr 配置
您需要为每个 Solr 进行独立配置。例如:
@Configuration
@EnableSolrRepositories(basePackages = {"com.project.repository.first"},
solrClientRef = "firstSolrClient",
solrTemplateRef = "firstSolrTemplate")
public class FirstSolrConfig {
@Value("${solr.first.url}")
private String solrHost;
@Bean
public SolrClient solrClient() {
return new HttpSolrClient.Builder(solrHost).build();
}
@Bean("firstSolrTemplate")
public SolrTemplate solrTemplate() {
return new SolrTemplate(this::solrClient);
}
}
-
@Configuration
@EnableSolrRepositories(basePackages = {"com.project.repository.second"},
solrClientRef = "secondSolrClient",
solrTemplateRef = "secondSolrTemplate")
public class SecondSolrConfig {
@Value("${solr.second.url}")
private String solrHost;
@Bean("secondSolrClient")
public SolrClient solrClient() {
return new HttpSolrClient.Builder(solrHost).build();
}
@Bean("secondSolrTemplate")
public SolrTemplate solrTemplate() {
return new SolrTemplate(this::solrClient);
}
}
来自第一个配置的 SolrClient Bean 必须具有“solrClient”名称!否则,您将无法引发 Spring Context。 您需要将存储库放在不同的包中。
这是我为这个案例找到的唯一可行的方法。
【问题讨论】:
-
这在不同的包中有效吗?
标签: java apache spring-boot solr