微服务架构之Spring Boot(四十九)

2022-05-23 15:36:00 浏览数 (1)

31.4 Gemfire

Spring数据Gemfire为访问Pivotal Gemfire数据管理平台提供了方便的Spring友好工具 。有一

个 spring-boot-starter-data-gemfire “Starter”用于以方便的方式收集依赖项。目前没有Gemfire的自动配置支持,但您可以使用单个注

释启用Spring数据存储库 :@EnableGemfireRepositories 。

31.5 Solr

Apache Solr是一个搜索引擎。Spring Boot为Solr 5客户端库提供了基本的自动配置,并在Spring Data Solr提供了它上面的抽象。有一

个 spring-boot-starter-data-solr “Starter”用于以方便的方式收集依赖项。

31.5.1连接到Solr

您可以像注射任何其他Spring bean一样注入自动配置的 SolrClient 实例。默认情况下,实例尝试连接到 localhost:8983/solr 的服务器。

以下示例显示了如何注入Solr bean:

@Component

public class MyBean {

private SolrClient solr;

@Autowired

public MyBean(SolrClient solr) {

this.solr = solr;

}

// ...

}

如果您添加 SolrClient 类型的 @Bean ,它将替换默认值。

31.5.2 Spring数据Solr存储库

Spring数据包括Apache Solr的存储库支持。与前面讨论的JPA存储库一样,基本原则是根据方法名称自动构建查询。

实际上,Spring Data JPA和Spring Data Solr共享相同的公共基础结构。您可以从前面获取JPA示例,假设 City 现在是 @SolrDocument 类而

不是JPA @Entity ,它的工作方式相同。

31.6 Elasticsearch

Elasticsearch是一个开源,分布式,RESTful搜索和分析引擎。Spring Boot为Elasticsearch提供基本的自动配置。

Spring Boot支持多个HTTP客户端:

官方Java“低级”和“高级”REST客户端

笑话

Spring Data Elasticsearch仍在使用传输客户端 ,您可以使用 spring-boot-starter-data-elasticsearch “Starter”开始使用它。

31.6.1 REST客户端连接到Elasticsearch

Elasticsearch提供了 两个 可用于查询集群的REST客户端:“低级”客户端和“高级”客户端。

如果您对类路径具有 org.elasticsearch.client:elasticsearch-rest-client 依赖关系,Spring Boot将自动配置并注册默认目标

为 localhost:9200 的 RestClient bean。您可以进一步调整 RestClient 的配置方式,如以下示例所示:

spring.elasticsearch.rest.uris=http://search.example.com:9200

spring.elasticsearch.rest.username=user

spring.elasticsearch.rest.password=secret

您还可以注册实现 RestClientBuilderCustomizer 的任意数量的beans以进行更高级的自定义。要完全控制注册,请定义 RestClient

bean。

如果您对类路径具有 org.elasticsearch.client:elasticsearch-rest-high-level-client 依赖关系,Spring Boot将自动配

置 RestHighLevelClient ,其包装任何现有的 RestClient bean,重用其HTTP配置。

31.6.2使用Jest连接到Elasticsearch

如果类路径上有 Jest ,则可以注入一个自动配置的 JestClient ,默认情况下为 localhost:9200 。您可以进一步调整客户端的配置方式,如

以下示例所示:

spring.elasticsearch.jest.uris=http://search.example.com:9200

spring.elasticsearch.jest.read-timeout=10000

spring.elasticsearch.jest.username=user

spring.elasticsearch.jest.password=secret

您还可以注册实现 HttpClientConfigBuilderCustomizer 的任意数量的beans以进行更高级的自定义。以下示例调整其他HTTP设置:

static class HttpSettingsCustomizer implements HttpClientConfigBuilderCustomizer {

@Override

public void customize(HttpClientConfig.Builder builder) {

builder.maxTotalConnection(100).defaultMaxTotalConnectionPerRoute(5);

}

}

要完全控制注册,请定义 JestClient bean。

31.6.3使用Spring数据连接到Elasticsearch

要连接到Elasticsearch,您必须提供一个或多个群集节点的地址。可以通过将 spring.data.elasticsearch.cluster-nodes 属性设置为逗号

分隔的 host:port 列表来指定地址。有了这种配置, ElasticsearchTemplate 或 TransportClient 可以像任何其他Spring bean一样注入,

如下例所示:

spring.data.elasticsearch.cluster-nodes=localhost:9300

@Component

public class MyBean {

private final ElasticsearchTemplate template;

public MyBean(ElasticsearchTemplate template) {

this.template = template;

}

// ...

}

如果您添加自己的 ElasticsearchTemplate 或 TransportClient @Bean ,则会替换默认值。

31.6.4 Spring数据Elasticsearch存储库

Spring数据包括Elasticsearch的存储库支持。与前面讨论的JPA存储库一样,基本原则是根据方法名称自动为您构建查询。

事实上,Spring Data JPA和Spring Data Elasticsearch共享相同的通用基础架构。您可以从之前获取JPA示例,假设 City 现在是Elasticsearch

@Document 类而不是JPA @Entity ,它的工作方式相同。

0 人点赞