Spring Boot 参考指南(使用NoSQL技术)

30. 使用NoSQL技术

Spring Data提供了额外的项目,帮助你访问各类NoSQL技术,包括:MongoDBNeo4JElasticsearchSolrRedisGemfireCassandraCouchbaseLDAP。Spring Boot为Redis、MongoDB、Neo4j、Elasticsearch、Solr Cassandra、Couchbase和LDAP提供了自动配置,你可使用其余项目,可是你必须本身配置它们,请参阅projects.spring.io/spring-data的适当参考文档。node

30.1 Redis

Redis是一个缓存、消息代理和功能丰富的键值存储,Spring Boot提供了LettuceJedis客户端库的基本自动配置,以及Spring Data Redis提供的在它们之上的抽象。react

有一个spring-boot-starter-data-redis “Starter”,能够方便地收集依赖项,默认状况下,它使用Lettuce,该starter同时处理传统应用程序和reactive应用程序。git

咱们还提供了一个 spring-boot-starter-data-redis-reactive “Starter”,以便与具备reactive支持的其余存储保持一致。

30.1.1 链接到Redis

能够像注入任何其余Spring Bean同样注入自动配置的RedisConnectionFactoryStringRedisTemplate或vanilla RedisTemplate实例,默认状况下,该实例试图链接到localhost:6379上的Redis服务器,下面的清单显示了这样一个bean的示例:github

@Component
public class MyBean {

    private StringRedisTemplate template;

    @Autowired
    public MyBean(StringRedisTemplate template) {
        this.template = template;
    }

    // ...

}

你还能够注册任意数量的bean,这些bean实现LettuceClientConfigurationBuilderCustomizer用于更高级的定制,若是你使用Jedis,也可使用JedisClientConfigurationBuilderCustomizerredis

若是你添加了任何自动配置类型的本身的@Bean,它替换默认值(在RedisTemplate的状况下除外,当排除值是基于bean名称时,则替换为RedisTemplate,而不是它的类型),默认状况下,若是commons-pool2在类路径上,就会获得一个链接池工厂。spring

30.6 Elasticsearch

Elasticsearch是一个开源、分布式、实时搜索和分析引擎,Spring Boot为Elasticsearch提供了基本的自动配置,上面的抽象由Spring Data Elasticsearch提供,有一个spring-boot-starter-data-elasticsearch “Starter”能够方便地收集依赖项,Spring Boot也支持Jestmongodb

30.6.1 使用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

你还能够注册任意数量的bean,这些bean实现HttpClientConfigBuilderCustomizer,用于更高级的定制,下面的示例调优其余HTTP设置:服务器

static class HttpSettingsCustomizer implements HttpClientConfigBuilderCustomizer {

    @Override
    public void customize(HttpClientConfig.Builder builder) {
        builder.maxTotalConnection(100).defaultMaxTotalConnectionPerRoute(5);
    }

}

要彻底控制注册,定义一个JestClient bean。elasticsearch

30.6.2 使用Spring Data链接到Elasticsearch

要链接到Elasticsearch,必须提供一个或多个集群节点的地址,能够经过设置spring.data.elasticsearch.cluster-nodes属性来指定一个逗号分隔的host:port列表的地址。有了这个配置,一个ElasticsearchTemplateTransportClient就能够像其余任何Spring bean同样被注入,以下面的示例所示:

spring.data.elasticsearch.cluster-nodes=localhost:9300
@Component
public class MyBean {

    private final ElasticsearchTemplate template;

    public MyBean(ElasticsearchTemplate template) {
        this.template = template;
    }

    // ...

}

若是你添加本身的ElasticsearchTemplateTransportClient @Bean,它会替换默认。

30.6.3 Spring Data Elasticsearch存储库

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

事实上,Spring Data JPA和Spring Data Elasticsearch共享相同的公共基础设施,你能够之前面的JPA示例为例,假设City如今是Elasticsearch @Document类,而不是JPA @Entity,它的工做方式是相同的。

有关Spring Data Elasticsearch的详细信息,请参阅 参考文档
相关文章
相关标签/搜索