Spring Data提供了其他项目,可帮助您访问各种NoSQL技术,包括:

Spring Boot为Redis,MongoDB,Neo4j,Elasticsearch,Solr Cassandra,Couchbase和LDAP提供自动配置。您可以使用其他项目,但是必须自己配置它们。请参阅相应的参考文档,位于spring.io/projects/spring-data

12.1 Redis

Redis是一个缓存,消息代理和功能丰富的键值存储。Spring Boot为LettuceJedis客户端库以及Spring Data Redis提供的最基本的抽象提供了基本的自动配置。
有一个spring-boot-starter-data-redis“启动器”可以方便地收集依赖关系。默认情况下,它使用Lettuce。该启动程序可以处理传统应用程序和响应式应用程序。

我们还提供了spring-boot-starter-data-redis-reactive“入门级”软件,可与其他商店保持一致,并提供响应性支持。

12.1.1 连接到Redis

您可以像注入其他任何Spring Bean一样注入自动配置的RedisConnectionFactoryStringRedisTemplate或VanillaRedisTemplate实例。默认情况下,该实例尝试在以下位置连接到Redis服务器localhost:6379。下面的清单显示了这种Bean的示例:

  1. @Component
  2. public class MyBean {
  3. private StringRedisTemplate template;
  4. @Autowired
  5. public MyBean(StringRedisTemplate template) {
  6. this.template = template;
  7. }
  8. // ...
  9. }
您还可以注册任意数量的Bean,以实现LettuceClientConfigurationBuilderCustomizer更高级的自定义。如果您使用Jedis,JedisClientConfigurationBuilderCustomizer也可以使用。

如果您添加自己@Bean的任何一种自动配置类型,它将替换默认类型(除非是RedisTemplate,当排除基于Bean名称redisTemplate而不是其类型时为)。默认情况下,如果commons-pool2在类路径上,则会得到一个池化连接工厂。

12.2 MongoDB

MongoDB是一个开源NoSQL文档数据库,它使用类似JSON的架构而不是传统的基于表的关系数据。Spring Boot为MongoDB的使用提供了许多便利,包括spring-boot-starter-data-mongodbspring-boot-starter-data-mongodb-reactiveStarters。

12.2.1 连接到MongoDB数据库

要访问MongoDB数据库,可以注入自动配置的org.springframework.data.mongodb.MongoDatabaseFactory。默认情况下,该实例尝试通过连接到MongoDB服务器mongodb://localhost/test。以下示例显示了如何连接到MongoDB数据库:

  1. import org.springframework.data.mongodb.MongoDatabaseFactory;
  2. import com.mongodb.client.MongoDatabase;
  3. @Component
  4. public class MyBean {
  5. private final MongoDatabaseFactory mongo;
  6. @Autowired
  7. public MyBean(MongoDatabaseFactory mongo) {
  8. this.mongo = mongo;
  9. }
  10. // ...
  11. public void example() {
  12. MongoDatabase db = mongo.getMongoDatabase();
  13. // ...
  14. }
  15. }

如果定义了自己的MongoClient,它将用于自动配置合适的MongoDatabaseFactory
自动配置MongoClient是使用MongoClientSettingsBean创建的。如果定义了自己的MongoClientSettings,则无需修改即可使用它,并且spring.data.mongodb属性将被忽略。否则,MongoClientSettings将自动配置a并对其spring.data.mongodb应用属性。无论哪种情况,都可以声明一个或多个MongoClientSettingsBuilderCustomizerbean来微调MongoClientSettings配置。每个都将与MongoClientSettings.Builder用于构建的依次调用MongoClientSettings
您可以设置spring.data.mongodb.uri属性来更改URL并配置其他设置,例如副本集,如以下示例所示:

  1. spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:12345,mongo2.example.com:23456/test

或者,您可以使用离散属性指定连接详细信息。例如,您可以在中声明以下设置application.properties
物产
Yaml

  1. spring.data.mongodb.host=mongoserver.example.com
  2. spring.data.mongodb.port=27017
  3. spring.data.mongodb.database=test
  4. spring.data.mongodb.username=user
  5. spring.data.mongodb.password=secret
如果spring.data.mongodb.port未指定,27017则使用默认值。您可以从前面显示的示例中删除此行。
如果您不使用Spring Data MongoDB,则可以注入一个MongoClientbean而不是使用MongoDatabaseFactory。如果您想完全控制建立MongoDB连接的方式,也可以声明自己的MongoDatabaseFactoryMongoClientbean。
如果使用反应性驱动程序,则SSL需要Netty。如果可以使用Netty并且尚未自定义要使用的工厂,则自动配置会自动配置该工厂。

12.2.2 MongoTemplate

Spring Data MongoDB提供了一个MongoTemplate与Spring的设计非常相似的类JdbcTemplate。与一样JdbcTemplate,Spring Boot为您自动配置一个Bean来注入模板,如下所示:

  1. import org.springframework.data.mongodb.core.MongoTemplate;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. public class MyBean {
  5. private final MongoTemplate mongoTemplate;
  6. public MyBean(MongoTemplate mongoTemplate) {
  7. this.mongoTemplate = mongoTemplate;
  8. }
  9. // ...
  10. }

有关完整的详细信息,请参见MongoOperationsJavadoc

12.2.3 Spring Data MongoDB存储库

Spring Data包括对MongoDB的存储库支持。与前面讨论的JPA存储库一样,基本原理是根据方法名称自动构造查询。
实际上,Spring Data JPA和Spring Data MongoDB共享相同的通用基础架构。您可以从以前的JPA示例开始,并假设它City现在是MongoDB数据类而不是JPA @Entity,它的工作方式相同,如以下示例所示:

  1. package com.example.myapp.domain;
  2. import org.springframework.data.domain.*;
  3. import org.springframework.data.repository.*;
  4. public interface CityRepository extends Repository<City, Long> {
  5. Page<City> findAll(Pageable pageable);
  6. City findByNameAndStateAllIgnoringCase(String name, String state);
  7. }
您可以使用@EntityScan注释来自定义文档扫描位置。
有关Spring Data MongoDB的完整详细信息,包括其丰富的对象映射技术,请参阅其参考文档

12.2.4 嵌入式Mongo

Spring Boot为Embedded Mongo提供自动配置。要在Spring Boot应用程序中使用它,请添加对的依赖de.flapdoodle.embed:de.flapdoodle.embed.mongo
可以通过设置spring.data.mongodb.port属性来配置Mongo侦听的端口。要使用随机分配的空闲端口,请使用值0。created MongoClientbyMongoAutoConfiguration被自动配置为使用随机分配的端口。

如果未配置自定义端口,则默认情况下,嵌入式支持使用随机端口(而不是27017)。

如果类路径上有SLF4J,则Mongo产生的输出将自动路由到名为的记录器org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongo
您可以声明自己的beanIMongodConfigIRuntimeConfigbean,以控制Mongo实例的配置和日志记录路由。可以通过声明DownloadConfigBuilderCustomizerbean来定制下载配置。

12.3 Neo4j

Neo4j是一个开源NoSQL图形数据库,它使用通过一级关系连接的节点的丰富数据模型,与传统的RDBMS方法相比,它更适合于连接的大数据。Spring Boot提供了许多使用Neo4j的便利,包括spring-boot-starter-data-neo4j“ Starter”。

12.3.1 连接到Neo4j数据库

要访问Neo4j服务器,您可以注入自动配置的org.neo4j.driver.Driver。默认情况下,实例尝试localhost:7687使用Bolt协议连接到Neo4j服务器。以下示例显示了如何注入Neo4j Driver,除其他事项外,Neo4j使您可以访问Session

  1. @Component
  2. public class MyBean {
  3. private final Driver driver;
  4. @Autowired
  5. public MyBean(Driver driver) {
  6. this.driver = driver;
  7. }
  8. // ...
  9. }

您可以使用spring.neo4j.*属性来配置驱动程序的各个方面。以下示例显示如何配置uri和凭据以使用:
物产
Yaml

  1. spring.neo4j.uri=bolt://my-server:7687
  2. spring.neo4j.authentication.username=neo4j
  3. spring.neo4j.authentication.password=secret

自动配置Driver是使用创建的ConfigBuilder。要微调其配置,请声明一个或多个ConfigBuilderCustomizerbean。每个都将与ConfigBuilder用于构建的依次调用Driver

12.3.2 Spring Data Neo4j存储库

Spring Data包括对Neo4j的存储库支持。有关Spring Data Neo4j的完整详细信息,请参考参考文档
Spring Data Neo4j与许多其他Spring Data模块一样,与Spring Data JPA共享公共基础结构。您可以使用前面的JPA示例,并将其定义City为Spring Data Neo4j@Node而不是JPA @Entity,并且存储库抽象以相同的方式工作,如以下示例所示:

  1. package com.example.myapp.domain;
  2. import java.util.Optional;
  3. import org.springframework.data.neo4j.repository.*;
  4. public interface CityRepository extends Neo4jRepository<City, Long> {
  5. Optional<City> findOneByNameAndState(String name, String state);
  6. }

spring-boot-starter-data-neo4j“入门”使仓库的支持以及事务管理。Spring Boot使用Neo4jTemplateReactiveNeo4jTemplatebean支持经典和反应性Neo4j存储库。当Project Reactor在类路径上可用时,反应式样式也会自动配置。
您可以通过在-bean上分别使用@EnableNeo4jRepositories和来定制位置以查找存储库和实体。@EntityScan``@Configuration

| | 在使用反应式样式的应用程序中,ReactiveTransactionManager不会自动配置a。要启用事务管理,必须在配置中定义以下Bean:``` @Bean public ReactiveNeo4jTransactionManager reactiveTransactionManager(Driver driver, ReactiveDatabaseSelectionProvider databaseNameProvider) { return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider); }

  1. |
  2. | :---: | --- |
  3. <a name="boot-features-solr"></a>
  4. ### 12.4 Solr
  5. [Apache Solr](https://lucene.apache.org/solr/)是一个搜索引擎。Spring Boot为Solr 5客户端库提供了基本的自动配置,并由[Spring Data Solr](https://github.com/spring-projects/spring-data-solr)在其之上提供了抽象。有一个`spring-boot-starter-data-solr`“启动器”可以方便地收集依赖关系。
  6. <a name="boot-features-connecting-to-solr"></a>
  7. #### 12.4.1 连接到Solr
  8. 您可以像插入`SolrClient`其他任何Spring Bean一样注入自动配置的实例。默认情况下,该实例尝试连接到的服务器`[localhost:8983/solr](http://localhost:8983/solr)`。以下示例显示如何注入Solr bean

@Component public class MyBean { private SolrClient solr; @Autowired public MyBean(SolrClient solr) { this.solr = solr; } // … }

  1. 如果添加自己`@Bean`type `SolrClient`,它将替换默认值。
  2. <a name="boot-features-spring-data-solr-repositories"></a>
  3. #### 12.4.2 Spring Data Solr存储库
  4. Spring Data包括对Apache Solr的存储库支持。与前面讨论的JPA存储库一样,基本原理是根据方法名称自动为您构建查询。<br />实际上,Spring Data JPASpring Data Solr共享相同的通用基础结构。您可以从以前的JPA示例开始,假设`City`现在是一个`@SolrDocument`类,而不是JPA `@Entity`,它的工作方式相同。<br />IP:有关Spring Data Solr的完整详细信息,请参阅[参考文档](https://docs.spring.io/spring-data/solr/docs/4.3.0-RC2/reference/html/)。
  5. <a name="boot-features-elasticsearch"></a>
  6. ### 12.5 弹性搜索
  7. [Elasticsearch](https://www.elastic.co/products/elasticsearch)是一个开源,分布式,RESTful搜索和分析引擎。Spring Boot为Elasticsearch提供了基本的自动配置。<br />Spring Boot支持多个客户端:
  8. - 官方Java“低级”和“高级” REST客户端
  9. - `ReactiveElasticsearchClient`Spring数据Elasticsearch提供
  10. Spring Boot提供了专用的“入门” `spring-boot-starter-data-elasticsearch`
  11. <a name="boot-features-connecting-to-elasticsearch-rest"></a>
  12. #### 12.5.1 使用REST客户端连接到Elasticsearch
  13. Elasticsearch附带了[两个](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html)可用于查询集群的[REST客户端](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html):“低级”客户端和“高级”客户端。Spring Boot为随附的“高级”客户端提供支持`org.elasticsearch.client:elasticsearch-rest-high-level-client`。<br />如果您对类路径具有这种依赖性,Spring Boot将自动配置并注册一个`RestHighLevelClient`默认为target的bean `[localhost:9200](http://localhost:9200/)`。您可以进一步调整`RestHighLevelClient`配置方式,如以下示例所示:<br />物产<br />Yaml

spring.elasticsearch.rest.uris=https://search.example.com:9200 spring.elasticsearch.rest.read-timeout=10s spring.elasticsearch.rest.username=user spring.elasticsearch.rest.password=secret

  1. 您还可以注册任意数量的Bean,以实现`RestClientBuilderCustomizer`更高级的自定义。要完全控制注册,请定义一个`RestClientBuilder`bean
  2. | | 如果您的应用程序需要访问“低级别” `RestClient`,则可以通过调用`client.getLowLevelClient()`自动配置来获得它`RestHighLevelClient` |
  3. | :---: | --- |
  4. <a name="boot-features-connecting-to-elasticsearch-reactive-rest"></a>
  5. #### 12.5.2 使用反应式REST客户端连接到Elasticsearch
  6. [Spring Data Elasticsearch](https://spring.io/projects/spring-data-elasticsearch)附带`ReactiveElasticsearchClient`用于以反应方式查询Elasticsearch实例。它建立在WebFlux的基础上`WebClient`,因此`spring-boot-starter-elasticsearch`和`spring-boot-starter-webflux`依赖项对于启用此支持都是有用的。<br />默认情况下,Spring Boot将自动配置并注册一个`ReactiveElasticsearchClient` target的bean `[localhost:9200](http://localhost:9200/)`。您可以进一步调整其配置,如以下示例所示:<br />物产<br />Yaml

spring.data.elasticsearch.client.reactive.endpoints=search.example.com:9200 spring.data.elasticsearch.client.reactive.use-ssl=true spring.data.elasticsearch.client.reactive.socket-timeout=10s spring.data.elasticsearch.client.reactive.username=user spring.data.elasticsearch.client.reactive.password=secret

  1. 如果配置属性不够,并且您想完全控制客户端配置,则可以注册一个自定义`ClientConfiguration`bean
  2. <a name="boot-features-connecting-to-elasticsearch-spring-data"></a>
  3. #### 12.5.3 使用Spring数据连接到Elasticsearch
  4. 要连接到Elasticsearch`RestHighLevelClient`必须定义一个bean,它由Spring Boot自动配置或由应用程序手动提供(请参阅前面的部分)。有了此配置后,`ElasticsearchRestTemplate`可以像其他任何Spring bean一样注入an ,如以下示例所示:

@Component public class MyBean { private final ElasticsearchRestTemplate template; public MyBean(ElasticsearchRestTemplate template) { this.template = template; } // … }

  1. 在存在`spring-data-elasticsearch`和使用`WebClient`(通常是`spring-boot-starter-webflux`)所需的依赖关系的情况下,Spring Boot还可以自动配置[ReactiveElasticsearchClient](https://docs.spring.io/spring-boot/docs/2.4.0-SNAPSHOT/reference/html/spring-boot-features.html#boot-features-connecting-to-elasticsearch-reactive-rest)和`ReactiveElasticsearchTemplate`as bean。它们与其他REST客户端等效。
  2. <a name="boot-features-spring-data-elasticsearch-repositories"></a>
  3. #### 12.5.4 Spring Data Elasticsearch存储库
  4. Spring Data包括对Elasticsearch的存储库支持。与前面讨论的JPA存储库一样,基本原理是根据方法名称自动为您构造查询。<br />实际上,Spring Data JPASpring Data Elasticsearch共享相同的通用基础架构。您可以从以前的JPA示例开始,并假设`City`现在是Elasticsearch`@Document`类而不是JPA `@Entity`,它的工作方式相同。
  5. | | 有关Spring Data Elasticsearch的完整详细信息,请[参考参考文档](https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/)。 |
  6. | :---: | --- |
  7. Spring Boot使用`ElasticsearchRestTemplate``ReactiveElasticsearchTemplate`bean支持经典和反应式Elasticsearch存储库。给定所需的依赖项,这些bean很可能由Spring Boot自动配置。<br />如果您希望使用自己的模板来支持Elasticsearch存储库,则可以添加自己的`ElasticsearchRestTemplate``ElasticsearchOperations` `@Bean`(只要命名为)`"elasticsearchTemplate"`Bean名称也适用于`ReactiveElasticsearchTemplate`和。`ReactiveElasticsearchOperations``"reactiveElasticsearchTemplate"`<br />您可以选择使用以下属性禁用存储库支持:<br />物产<br />Yaml

spring.data.elasticsearch.repositories.enabled=false

  1. <a name="boot-features-cassandra"></a>
  2. ### 12.6 Cassandra
  3. [Cassandra](https://cassandra.apache.org/)是一个开放源代码的分布式数据库管理系统,旨在处理许多商品服务器上的大量数据。Spring Boot为Cassandra提供自动配置,并由[Spring Data Cassandra](https://github.com/spring-projects/spring-data-cassandra)在其之上提供抽象。有一个`spring-boot-starter-data-cassandra`“启动器”可以方便地收集依赖关系。
  4. <a name="boot-features-connecting-to-cassandra"></a>
  5. #### 12.6.1 连接到Cassandra
  6. 您可以像使用其他任何Spring Bean一样注入自动配置`CassandraTemplate`的`CqlSession`实例或Cassandra实例。这些`spring.data.cassandra.*`属性可用于自定义连接。一般情况下,提供`keyspace-name`和`contact-points`以及本地数据中心的名称,如下面的例子:<br />物产<br />Yaml

spring.data.cassandra.keyspace-name=mykeyspace spring.data.cassandra.contact-points=cassandrahost1:9042,cassandrahost2:9042 spring.data.cassandra.local-datacenter=datacenter1

  1. 如果所有联系人的端口都相同,则可以使用快捷方式,仅指定主机名,如以下示例所示:<br />物产<br />Yaml

spring.data.cassandra.keyspace-name=mykeyspace spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2 spring.data.cassandra.local-datacenter=datacenter1

  1. | | 这两个示例与默认端口为相同`9042`。如果需要配置端口,请使用`spring.data.cassandra.port` |
  2. | :---: | --- |
  3. | | Cassandra驱动程序具有自己的配置基础结构`application.conf`,该结构在类路径的根目录中加载。<br />Spring Boot不会查找此类文件,而是通过`spring.data.cassandra.*`名称空间提供了许多配置属性。要进行更高级的驱动程序自定义,您可以注册任意数量的实现的Bean `DriverConfigLoaderBuilderCustomizer`。该`CqlSession`可与类型的豆进行定制`CqlSessionBuilderCustomizer` |
  4. | :---: | --- |
  5. | | 如果要`CqlSessionBuilder`用于创建多个`CqlSession`bean,请记住该构建器是可变的,因此请确保为每个会话注入一个新副本。 |
  6. | :---: | --- |
  7. 以下代码清单显示了如何注入Cassandra bean

@Component public class MyBean { private final CassandraTemplate template; public MyBean(CassandraTemplate template) { this.template = template; } // … }

  1. 如果添加自己`@Bean`type `CassandraTemplate`,它将替换默认值。
  2. <a name="boot-features-spring-data-cassandra-repositories"></a>
  3. #### 12.6.2 Spring Data Cassandra存储库
  4. Spring Data包括对Cassandra的基本存储库支持。当前,此功能比前面讨论的JPA存储库更受限制,需要使用来注释finder方法`@Query`
  5. | | 有关Spring Data Cassandra的完整详细信息,请[参考参考文档](https://docs.spring.io/spring-data/cassandra/docs/)。 |
  6. | :---: | --- |
  7. <a name="boot-features-couchbase"></a>
  8. ### 12.7 Couchbase
  9. [Couchbase](https://www.couchbase.com/)是一个开放源代码,分布式,多模型NoSQL面向文档的数据库,已针对交互式应用程序进行了优化。Spring Boot为Couchbase提供自动配置,并由[Spring Data Couchbase](https://github.com/spring-projects/spring-data-couchbase)在其之上提供抽象。有`spring-boot-starter-data-couchbase`和`spring-boot-starter-data-couchbase-reactive`“入门者”可以方便地收集依赖项。
  10. <a name="boot-features-connecting-to-couchbase"></a>
  11. #### 12.7.1 连接到Couchbase
  12. 您可以`Cluster`通过添加Couchbase SDK和一些配置来获得。这些`spring.couchbase.*`属性可用于自定义连接。通常,您提供[连接字符串](https://github.com/couchbaselabs/sdk-rfcs/blob/master/rfc/0011-connection-string.md),用户名和密码,如以下示例所示:<br />物产<br />Yaml

spring.couchbase.connection-string=couchbase://192.168.1.123 spring.couchbase.username=user spring.couchbase.password=secret

  1. 也可以自定义某些`ClusterEnvironment`设置。例如,以下配置更改了用于打开新`Bucket`邮件并启用SSL支持的超时:<br />物产<br />Yaml

spring.couchbase.env.timeouts.connect=3s spring.couchbase.env.ssl.key-store=/location/of/keystore.jks spring.couchbase.env.ssl.key-store-password=secret

  1. | | 检查`spring.couchbase.env.*`属性以获取更多详细信息。为了获得更多控制权,`ClusterEnvironmentBuilderCustomizer`可以使用一个或多个bean |
  2. | :---: | --- |
  3. <a name="boot-features-spring-data-couchbase-repositories"></a>
  4. #### 12.7.2 Spring Data Couchbase存储库
  5. Spring Data包括对Couchbase的存储库支持。有关Spring Data Couchbase的完整详细信息,请[参考参考文档](https://docs.spring.io/spring-data/couchbase/docs/4.1.0-RC2/reference/html/)。<br />您可以`CouchbaseTemplate`像使用其他任何Spring Bean一样注入自动配置的实例,前提是该`CouchbaseClientFactory`bean可用。`Cluster`如上所述,当a可用且指定了存储桶名称时,会发生这种情况:<br />物产<br />Yaml

spring.data.couchbase.bucket-name=my-bucket

  1. 以下示例显示了如何注入`CouchbaseTemplate`bean

@Component public class MyBean { private final CouchbaseTemplate template; @Autowired public MyBean(CouchbaseTemplate template) { this.template = template; } // … }

  1. 您可以在自己的配置中定义一些Bean,以覆盖自动配置提供的那些:
  2. - 一个`CouchbaseMappingContext` `@Bean`用的名称`couchbaseMappingContext`
  3. - 一个`CustomConversions` `@Bean`用的名称`couchbaseCustomConversions`
  4. - 一个`CouchbaseTemplate` `@Bean`用的名称`couchbaseTemplate`
  5. 为了避免在您自己的配置中对这些名称进行硬编码,您可以重复使用`BeanNames`Spring Data Couchbase提供的名称。例如,您可以自定义要使用的转换器,如下所示:

@Configuration(proxyBeanMethods = false) public class SomeConfiguration { @Bean(BeanNames.COUCHBASE_CUSTOM_CONVERSIONS) public CustomConversions myCustomConversions() { return new CustomConversions(…); } // … }

  1. <a name="boot-features-ldap"></a>
  2. ### 12.8 LDAP
  3. [LDAP](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol)(轻型目录访问协议)是一种开放的,与供应商无关的行业标准应用程序协议,用于通过IP网络访问和维护分布式目录信息服务。Spring Boot为任何兼容的LDAP服务器提供自动配置,并从[UnboundID](https://ldap.com/unboundid-ldap-sdk-for-java/)支持嵌入式内存LDAP服务器。<br />LDAP抽象由[Spring Data LDAP提供](https://github.com/spring-projects/spring-data-ldap)。有一个`spring-boot-starter-data-ldap`“启动器”可以方便地收集依赖关系。
  4. <a name="boot-features-ldap-connecting"></a>
  5. #### 12.8.1 连接到LDAP服务器
  6. 要连接到LDAP服务器,请确保声明对`spring-boot-starter-data-ldap`“ Starter”的依赖`spring-ldap-core`,然后在application.properties中声明服务器的URL,如以下示例所示:<br />物产<br />Yaml

spring.ldap.urls=ldap://myserver:1235 spring.ldap.username=admin spring.ldap.password=secret

  1. 如果需要自定义连接设置,则可以使用`spring.ldap.base``spring.ldap.base-environment`属性。<br />将`LdapContextSource`根据这些设置自动配置。如果`DirContextAuthenticationStrategy`bean可用,则将其与自动配置的关联`LdapContextSource`。如果您需要对其进行自定义(例如使用)`PooledContextSource`,则仍可以注入自动配置`LdapContextSource`。确保将您的定制标记`ContextSource`为,`@Primary`以便自动配置`LdapTemplate`使用它。
  2. <a name="boot-features-ldap-spring-data-repositories"></a>
  3. #### 12.8.2 Spring Data LDAP存储库
  4. Spring Data包括对LDAP的存储库支持。有关Spring Data LDAP的完整详细信息,请[参考参考文档](https://docs.spring.io/spring-data/ldap/docs/1.0.x/reference/html/)。<br />您还可以`LdapTemplate`像使用其他任何Spring Bean一样注入自动配置的实例,如以下示例所示:

@Component public class MyBean { private final LdapTemplate template; @Autowired public MyBean(LdapTemplate template) { this.template = template; } // … }

  1. <a name="boot-features-ldap-embedded"></a>
  2. #### 12.8.3 嵌入式内存LDAP服务器
  3. 出于测试目的,Spring Boot支持从[UnboundID](https://ldap.com/unboundid-ldap-sdk-for-java/)自动配置内存中的LDAP服务器。要配置服务器,请向其添加依赖项`com.unboundid:unboundid-ldapsdk`并声明一个`spring.ldap.embedded.base-dn`属性,如下所示:<br />物产<br />Yaml

spring.ldap.embedded.base-dn=dc=spring,dc=io

  1. | | 可以定义多个base-dn值,但是,由于专有名称通常包含逗号,因此必须使用正确的符号定义它们。<br />在yaml文件中,您可以使用yaml列表符号。在属性文件中,必须将索引包括在属性名称中:<br />物产<br />Yaml

spring.ldap.embedded.base-dn[0]=dc=spring,dc=io spring.ldap.embedded.base-dn[1]=dc=pivotal,dc=io

  1. |
  2. | :---: | --- |
  3. 默认情况下,服务器在随机端口上启动并触发常规LDAP支持。无需指定`spring.ldap.urls`属性。<br />如果`schema.ldif`您的类路径中有一个文件,它将用于初始化服务器。如果要从其他资源加载初始化脚本,则也可以使用该`spring.ldap.embedded.ldif`属性。<br />默认情况下,使用标准架构来验证`LDIF`文件。您可以通过设置`spring.ldap.embedded.validation.enabled`属性来完全关闭验证。如果您具有定制属性,则可以`spring.ldap.embedded.validation.schema`用来定义定制属性类型或对象类。
  4. <a name="boot-features-influxdb"></a>
  5. ### 12.9 InfluxDB
  6. [InfluxDB](https://www.influxdata.com/)是一个开放源代码的时间序列数据库,已优化用于在操作监视,应用程序度量,物联网传感器数据和实时分析等领域中快速,高可用性地存储和检索时间序列数据。
  7. <a name="boot-features-connecting-to-influxdb"></a>
  8. #### 12.9.1 连接到InfluxDB
  9. `InfluxDB`如果`influxdb-java`客户端位于类路径上并且设置了数据库的URLSpring Boot会自动配置一个实例,如以下示例所示:<br />物产<br />Yaml

spring.influx.url=https://172.0.0.1:8086 `` 如果与InfluxDB的连接需要用户和密码,则可以相应地设置spring.influx.userspring.influx.password属性。<br />InfluxDB依赖OkHttp。如果需要在InfluxDB后台调整http客户端的使用,则可以注册一个InfluxDbOkHttpClientBuilderProvider`bean。