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的詳細信息,請參閱 參考文檔
相關文章
相關標籤/搜索