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的详细信息,请参阅 参考文档。