1。介绍
1.1。Spring命名空间
Spring Data Solr模块包含一个允许定义存储库bean的自定义命名空间以及用于实例化a的一个元素SolrClient
。
使用该repositories
元素查找Spring Data存储库,如创建存储库实例中所述。
使用命名空间设置Solr存储库
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
http://www.springframework.org/schema/data/solr/spring-solr.xsd">
<solr:repositories base-package="com.acme.repositories" />
</beans>
使用solr-server
or embedded-solr-server
元素注册SolrClient
上下文中的一个实例。
使用命名空间的HttpSolrClient
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
http://www.springframework.org/schema/data/solr/spring-solr.xsd">
<solr:solr-client id="solrClient" url="http://locahost:8983/solr" />
</beans>
使用命名空间的LBSolrClient
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
http://www.springframework.org/schema/data/solr/spring-solr.xsd">
<solr:solr-client id="solrClient" url="http://locahost:8983/solr,http://localhost:8984/solr" />
</beans>
使用名称空间的EmbeddedSolrServer
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
http://www.springframework.org/schema/data/solr/spring-solr.xsd">
<solr:embedded-solr-server id="solrClient" solrHome="classpath:com/acme/solr" />
</beans>
1.2。基于注释的配置
Spring Data Solr存储库支持不仅可以通过XML命名空间激活,还可以通过JavaConfig使用注释。
使用JavaConfig的Spring Data Solr存储库
@Configuration
@EnableSolrRepositories
class ApplicationConfig {
@Bean
public SolrClient solrClient() {
EmbeddedSolrServerFactory factory = new EmbeddedSolrServerFactory("classpath:com/acme/solr");
return factory.getSolrServer();
}
@Bean
public SolrOperations solrTemplate() {
return new SolrTemplate(solrClient());
}
}
上面的配置设置了一个EmbeddedSolrServer
被使用的SolrTemplate
。Spring Data Solr Repositories使用@EnableSolrRepositories
注释来激活,该注释本质上与XML名称空间具有相同的属性。如果没有配置基础软件包,它将使用配置类所在的软件包。
1.3。使用CDI的Solr Repositores
Spring Data Solr存储库也可以使用CDI功能进行设置。
例53.使用JavaConfig的Spring Data Solr存储库
class SolrTemplateProducer {
@Produces
@ApplicationScoped
public SolrOperations createSolrTemplate() {
return new SolrTemplate(new EmbeddedSolrServerFactory("classpath:com/acme/solr"));
}
}
class ProductService {
private ProductRepository repository;
public Page<Product> findAvailableProductsByName(String name, Pageable pageable) {
return repository.findByAvailableTrueAndNameStartingWith(name, pageable);
}
@Inject
public void setRepository(ProductRepository repository) {
this.repository = repository;
}
}