Spring Data提供了額外的項目,幫助你訪問各類NoSQL技術,包括:MongoDB,Neo4J,Elasticsearch,Solr,Redis,Gemfire,Cassandra,Couchbase和LDAP。Spring Boot爲Redis、MongoDB、Neo4j、Elasticsearch、Solr Cassandra、Couchbase和LDAP提供了自動配置,你可使用其餘項目,可是你必須本身配置它們,請參閱projects.spring.io/spring-data的適當參考文檔。node
Redis是一個緩存、消息代理和功能豐富的鍵值存儲,Spring Boot提供了Lettuce和Jedis客戶端庫的基本自動配置,以及Spring Data Redis提供的在它們之上的抽象。react
有一個spring-boot-starter-data-redis
「Starter」,能夠方便地收集依賴項,默認狀況下,它使用Lettuce,該starter同時處理傳統應用程序和reactive應用程序。git
咱們還提供了一個
spring-boot-starter-data-redis-reactive
「Starter」,以便與具備reactive支持的其餘存儲保持一致。
能夠像注入任何其餘Spring Bean同樣注入自動配置的RedisConnectionFactory
、StringRedisTemplate
或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,也可使用JedisClientConfigurationBuilderCustomizer
。redis
若是你添加了任何自動配置類型的本身的@Bean
,它替換默認值(在RedisTemplate
的狀況下除外,當排除值是基於bean名稱時,則替換爲RedisTemplate
,而不是它的類型),默認狀況下,若是commons-pool2
在類路徑上,就會獲得一個鏈接池工廠。spring
Elasticsearch是一個開源、分佈式、實時搜索和分析引擎,Spring Boot爲Elasticsearch提供了基本的自動配置,上面的抽象由Spring Data Elasticsearch提供,有一個spring-boot-starter-data-elasticsearch
「Starter」能夠方便地收集依賴項,Spring Boot也支持Jest。mongodb
若是類路徑上有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
要鏈接到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
,它會替換默認。
Spring Data包括對Elasticsearch的存儲庫支持,與前面討論的JPA存儲庫同樣,基本原則是根據方法名稱爲你自動構造查詢。
事實上,Spring Data JPA和Spring Data Elasticsearch共享相同的公共基礎設施,你能夠之前面的JPA示例爲例,假設City如今是Elasticsearch @Document
類,而不是JPA @Entity
,它的工做方式是相同的。
有關Spring Data Elasticsearch的詳細信息,請參閱 參考文檔。