行是知之始,知是行之成。这篇文章主要讲述Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一相关的知识,希望能为你提供帮助。
_原题是:Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一(Spring中国教育管理中心)
3.1.Spring 命名空间Spring Data Solr 模块包含一个自定义命名空间,允许定义存储库 bean 并具有用于实例化SolrClient.
使用该repositories元素查找 Spring Data 存储库,如创建存储库实例中所述。
以下示例显示了如何设置使用 Spring Data Solr 命名空间的 Solr 存储库:
示例 52. 使用命名空间设置 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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
https://www.springframework.org/schema/data/solr/spring-solr.xsd">
<
solr:repositories base-package="com.acme.repositories" />
<
/beans>
使用
solr-serverorembedded-solr-server元素SolrClient在上下文中注册一个实例。
以下示例显示了如何为 HTTP 设置 Solr 客户端:
示例 53.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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
https://www.springframework.org/schema/data/solr/spring-solr.xsd">
<
solr:solr-client id="solrClient" url="https://locahost:8983/solr" />
<
/beans>
以下示例显示了如何设置负载平衡 Solr 客户端:
示例 54.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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
https://www.springframework.org/schema/data/solr/spring-solr.xsd">
<
solr:solr-client id="solrClient" url="https://locahost:8983/solr,http://localhost:8984/solr" />
<
/beans>
以下示例显示了如何设置嵌入式 Solr 服务器:
示例 55. 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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/solr
https://www.springframework.org/schema/data/solr/spring-solr.xsd">
<
solr:embedded-solr-server id="solrClient" solrHome="classpath:com/acme/solr" />
<
/beans>
3.2.基于注解的配置Spring Data Solr 存储库支持可以通过 XML 命名空间和通过 java 配置使用注释来激活。
以下示例显示了如何使用 Java 配置设置 Solr 存储库:
示例 56.使用 Java 配置的 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 存储库通过使用@EnableSolrRepositories注解激活,注解本质上带有与 XML 命名空间相同的属性。如果没有配置基础包,则使用配置类所在的包。
3.3.使用 CDI 设置 Solr 存储库您还可以使用 CDI 来设置 Spring Data Solr 存储库,如以下示例所示:
示例 57.使用 Java 配置的 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;
3.4.交易支持Solr 对服务器级别事务的支持意味着自上次提交、优化或回滚以来的创建、更新和删除操作在服务器上排队,并作为一个组提交、优化或回滚。Spring Data Solr 存储库参与 Spring Managed Transactions 并在完成时提交或回滚更改。
以下示例显示了如何使用@Transactional注释来定义事务(在本例中为保存):
@Transactional
public Product save(Product product)
Product savedProduct = jpaRepository.save(product);
solrRepository.save(savedProduct);
return savedProduct;
3.5.查询方法本节介绍如何使用 Java 类中的方法创建查询。
3.5.1.查询查找策略Solr 模块支持将查询手动定义为String或从方法名称派生。
目前没有 QueryDSL 支持。
声明的查询从方法名称派生查询并不总是足够的,可能会导致方法名称不可读。在这种情况下,您可以使用 Solr 命名查询(参见“使用命名查询”)或使用@Query注释(参见“使用@Query注释”)。
3.5.2.查询创建通常,Solr 的查询创建机制按照查询方法中的描述工作。下面的例子展示了什么是 Solr 查询方法:
示例 58. 根据方法名称创建查询
public interface ProductRepository extends Repository<
Product, String>
List<
Product>
findByNameAndPopularity(String name, Integer popularity);
前面的示例转换为以下 Solr 查询:
q=name:?0 AND popularity:?1
下表描述了 Solr 支持的关键字:
集合类型可以与“Like”、“NotLike”、“StartingWith”、“EndingWith”和“Containing”一起使用。
Page<
Product>
findByNameLike(Collection<
String>
name);
3.5.3.使用@Query注解使用命名查询(请参阅“使用命名查询”)来声明实体查询是一种有效的方法,并且适用于少量查询。由于查询本身与执行它们的 Java 方法相关联,因此您实际上可以使用 Spring Data Solr@Query批注直接绑定它们。下面的例子使用@Query注解来声明一个查询:
示例 59. 使用@Query注释在方法中声明查询。
public interface ProductRepository extends SolrRepository<
Product, String>
@Query("inStock:?0")
List<
Product>
findByAvailable(Boolean available);
3.5.4.使用命名查询命名查询可以保存在属性文件中并连接到相应的方法。您应该记住“查询查找策略”中描述的命名约定或使用@Query. 以下示例显示如何在属性文件中声明名称查询:
示例 60. 在属性文件中声明命名查询
Product.findByNamedQuery=popularity:?0
Product.findByName=name:?0
下面的示例使用findByName前面示例中声明的命名查询 ( ) 之一:
public interface ProductRepository extends SolrCrudRepository<
Product, String>
List<
Product>
findByNamedQuery(Integer popularity);
@Query(name = "Product.findByName")
List<
Product>
findByAnnotatedNamedQuery(String name);
3.6.文件映射尽管 SolrJ 中已经支持实体映射,但 Spring Data Solr 附带了自己的映射机制(在下一节中描述)。
【Spring认证中国教育管理中心-Apache Solr 的 Spring 数据教程一】DocumentObjectBinder具有优越的性能。因此,如果您不需要客户映射,我们建议您使用它。您可以DocumentObjectBinder通过SolrJConverter在 内注册来切换到SolrTemplate。
推荐阅读
- 推荐学java——Spring第一课
- #yyds干货盘点# springboot配置@Async异步任务的线程池
- 文件解压缩及文件打包
- 实验(LAMP安装论坛)
- k8s故障排查指南
- 微灯手握寸笔,细谈内存管理
- 源码编译构建LAMP
- C# 设置或验证 PDF中的文本域格式
- Apache配置与应用