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

其中,Spring Boot 为 Cassandra、Couchbase、Elasticsearch、LDAP、MongoDB、Neo4J 和 Redis 提供了自动配置。 此外,Spring Boot for Apache Geode 为 Apache Geode 提供自动配置。 您可以使用其他项目,但必须自己配置它们。 请参阅 spring.io/projects/spring-data 上的相应参考文档。Spring中文文档

Spring Boot 还为 InfluxDB 客户端提供自动配置,但它已被弃用,取而代之的是提供自己的 Spring Boot 集成的新 InfluxDB Java 客户端Spring中文文档

Redis(瑞迪斯酒店)

Redis 是一个缓存、消息代理和功能丰富的键值存储。 Spring Boot 为 LettuceJedis 客户端库以及 Spring Data Redis 提供的抽象提供了基本的自动配置。Spring中文文档

有一个“启动器”可以方便地收集依赖项。 默认情况下,它使用生菜。 该启动器可以处理传统应用程序和响应式应用程序。spring-boot-starter-data-redisSpring中文文档

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

连接到 Redis

您可以像注入任何其他 Spring Bean 一样注入自动配置的 、 或 vanilla 实例。 以下列表显示了此类 Bean 的示例:RedisConnectionFactoryStringRedisTemplateRedisTemplateSpring中文文档

import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final StringRedisTemplate template;

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

	// ...

	public Boolean someMethod() {
		return this.template.hasKey("spring");
	}

}
import org.springframework.data.redis.core.StringRedisTemplate
import org.springframework.stereotype.Component

@Component
class MyBean(private val template: StringRedisTemplate) {

	// ...

	fun someMethod(): Boolean {
		return template.hasKey("spring")
	}

}

默认情况下,实例会尝试连接到位于 的 Redis 服务器。 可以使用属性指定自定义连接详细信息,如以下示例所示:localhost:6379spring.data.redis.*Spring中文文档

spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.database=0
spring.data.redis.username=user
spring.data.redis.password=secret
spring:
  data:
    redis:
      host: "localhost"
      port: 6379
      database: 0
      username: "user"
      password: "secret"
您还可以注册任意数量的 Bean,以实现更高级的定制。 也可以使用 自定义。 如果您使用绝地武士,也可用。 或者,您可以注册 、 或 类型的 Bean 以完全控制配置。LettuceClientConfigurationBuilderCustomizerClientResourcesClientResourcesBuilderCustomizerJedisClientConfigurationBuilderCustomizerRedisStandaloneConfigurationRedisSentinelConfigurationRedisClusterConfiguration

如果添加自己的任何自动配置类型,它将替换缺省类型(除非是 ,当排除项基于 Bean 名称而不是其类型时)。@BeanRedisTemplateredisTemplateSpring中文文档

默认情况下,如果在类路径上,则会自动配置池连接工厂。commons-pool2Spring中文文档

通过设置以下示例中所示的属性,可以将自动配置配置为使用 SSL 与服务器进行通信:RedisConnectionFactorySpring中文文档

spring.data.redis.ssl.enabled=true
spring:
  data:
    redis:
      ssl:
        enabled: true

自定义 SSL 信任材料可以在 SSL 捆绑包中配置,并应用于RedisConnectionFactorySpring中文文档

spring.data.redis.ssl.bundle=example
spring:
  data:
    redis:
      ssl:
        bundle: "example"
我们还提供了一个“入门”,以与其他商店保持一致,并提供反应性支持。spring-boot-starter-data-redis-reactive
您还可以注册任意数量的 Bean,以实现更高级的定制。 也可以使用 自定义。 如果您使用绝地武士,也可用。 或者,您可以注册 、 或 类型的 Bean 以完全控制配置。LettuceClientConfigurationBuilderCustomizerClientResourcesClientResourcesBuilderCustomizerJedisClientConfigurationBuilderCustomizerRedisStandaloneConfigurationRedisSentinelConfigurationRedisClusterConfiguration

MongoDB的

MongoDB 是一个开源的 NoSQL 文档数据库,它使用类似 JSON 的模式而不是传统的基于表的关系数据。 Spring Boot 为使用 MongoDB 提供了多种便利,包括 和 “Starters”。spring-boot-starter-data-mongodbspring-boot-starter-data-mongodb-reactiveSpring中文文档

连接到MongoDB数据库

要访问 MongoDB 数据库,您可以注入自动配置的 . 默认情况下,实例会尝试连接到位于 的 MongoDB 服务器。 以下示例演示如何连接到 MongoDB 数据库:org.springframework.data.mongodb.MongoDatabaseFactorymongodb://localhost/testSpring中文文档

import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final MongoDatabaseFactory mongo;

	public MyBean(MongoDatabaseFactory mongo) {
		this.mongo = mongo;
	}

	// ...

	public MongoCollection<Document> someMethod() {
		MongoDatabase db = this.mongo.getMongoDatabase();
		return db.getCollection("users");
	}

}
import com.mongodb.client.MongoCollection
import org.bson.Document
import org.springframework.data.mongodb.MongoDatabaseFactory
import org.springframework.stereotype.Component

@Component
class MyBean(private val mongo: MongoDatabaseFactory) {

	// ...

	fun someMethod(): MongoCollection<Document> {
		val db = mongo.mongoDatabase
		return db.getCollection("users")
	}

}

如果您已经定义了自己的 ,它将用于自动配置合适的 .MongoClientMongoDatabaseFactorySpring中文文档

自动配置是使用 Bean 创建的。 如果您已经定义了自己的 ,它将在不修改的情况下使用,并且属性将被忽略。 否则,将自动配置 a 并应用其属性。 无论哪种情况,您都可以声明一个或多个 Bean 来微调配置。 每个都将按用于构建 .MongoClientMongoClientSettingsMongoClientSettingsspring.data.mongodbMongoClientSettingsspring.data.mongodbMongoClientSettingsBuilderCustomizerMongoClientSettingsMongoClientSettings.BuilderMongoClientSettingsSpring中文文档

您可以设置属性以更改 URL 并配置其他设置,例如副本集,如以下示例所示:spring.data.mongodb.uriSpring中文文档

spring.data.mongodb.uri=mongodb://user:[email protected]:27017,mongoserver2.example.com:23456/test
spring:
  data:
    mongodb:
      uri: "mongodb://user:[email protected]:27017,mongoserver2.example.com:23456/test"

或者,可以使用离散属性指定连接详细信息。 例如,您可以在 :application.propertiesSpring中文文档

spring.data.mongodb.host=mongoserver1.example.com
spring.data.mongodb.port=27017
spring.data.mongodb.additional-hosts[0]=mongoserver2.example.com:23456
spring.data.mongodb.database=test
spring.data.mongodb.username=user
spring.data.mongodb.password=secret
spring:
  data:
    mongodb:
      host: "mongoserver1.example.com"
      port: 27017
      additional-hosts:
      - "mongoserver2.example.com:23456"
      database: "test"
      username: "user"
      password: "secret"

通过设置以下示例中所示的属性,可以将自动配置配置为使用 SSL 与服务器进行通信:MongoClientSpring中文文档

spring.data.mongodb.uri=mongodb://user:[email protected]:27017,mongoserver2.example.com:23456/test
spring.data.mongodb.ssl.enabled=true
spring:
  data:
    mongodb:
      uri: "mongodb://user:[email protected]:27017,mongoserver2.example.com:23456/test"
      ssl:
        enabled: true

自定义 SSL 信任材料可以在 SSL 捆绑包中配置,并应用于MongoClientSpring中文文档

spring.data.mongodb.uri=mongodb://user:[email protected]:27017,mongoserver2.example.com:23456/test
spring.data.mongodb.ssl.bundle=example
spring:
  data:
    mongodb:
      uri: "mongodb://user:[email protected]:27017,mongoserver2.example.com:23456/test"
      ssl:
        bundle: "example"

如果未指定,则使用默认值 。 您可以从前面显示的示例中删除此行。spring.data.mongodb.port27017Spring中文文档

还可以使用语法将端口指定为主机地址的一部分。 如果需要更改条目的端口,则应使用此格式。host:portadditional-hostsSpring中文文档

如果不使用 Spring Data MongoDB,则可以注入 bean 而不是使用 . 如果要完全控制建立MongoDB连接,还可以声明自己的或bean。MongoClientMongoDatabaseFactoryMongoDatabaseFactoryMongoClient
如果您使用的是反应式驱动程序,则 SSL 需要 Netty。 如果 Netty 可用且要使用的工厂尚未自定义,则自动配置会自动配置此出厂设置。

Mongo模板

Spring Data MongoDB 提供了一个 MongoTemplate 类,其设计与 Spring 的 . 与 一样,Spring Boot 会自动配置一个 bean 来注入模板,如下所示:JdbcTemplateJdbcTemplateSpring中文文档

import com.mongodb.client.MongoCollection;
import org.bson.Document;

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final MongoTemplate mongoTemplate;

	public MyBean(MongoTemplate mongoTemplate) {
		this.mongoTemplate = mongoTemplate;
	}

	// ...

	public MongoCollection<Document> someMethod() {
		return this.mongoTemplate.getCollection("users");
	}

}
import com.mongodb.client.MongoCollection
import org.bson.Document
import org.springframework.data.mongodb.core.MongoTemplate
import org.springframework.stereotype.Component

@Component
class MyBean(private val mongoTemplate: MongoTemplate) {

	// ...

	fun someMethod(): MongoCollection<Document> {
		return mongoTemplate.getCollection("users")
	}

}

有关完整的详细信息,请参阅 MongoOperations JavadocSpring中文文档

Spring Data MongoDB 存储库

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

事实上,Spring Data JPA 和 Spring Data MongoDB 共享相同的通用基础架构。 您可以采用前面的 JPA 示例,假设它现在是 MongoDB 数据类而不是 JPA ,它的工作方式与以下示例相同:City@EntitySpring中文文档

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.Repository;

public interface CityRepository extends Repository<City, Long> {

	Page<City> findAll(Pageable pageable);

	City findByNameAndStateAllIgnoringCase(String name, String state);

}
import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable
import org.springframework.data.repository.Repository

interface CityRepository :
	Repository<City?, Long?> {
	fun findAll(pageable: Pageable?): Page<City?>?
	fun findByNameAndStateAllIgnoringCase(name: String?, state: String?): City?
}

存储库和文档通过扫描找到。 默认情况下,将扫描自动配置包。 您可以分别使用 和 自定义位置以查找存储库和文档。@EnableMongoRepositories@EntityScanSpring中文文档

有关Spring Data MongoDB的完整详细信息,包括其丰富的对象映射技术,请参阅其参考文档。

如果未指定,则使用默认值 。 您可以从前面显示的示例中删除此行。spring.data.mongodb.port27017Spring中文文档

还可以使用语法将端口指定为主机地址的一部分。 如果需要更改条目的端口,则应使用此格式。host:portadditional-hostsSpring中文文档

如果不使用 Spring Data MongoDB,则可以注入 bean 而不是使用 . 如果要完全控制建立MongoDB连接,还可以声明自己的或bean。MongoClientMongoDatabaseFactoryMongoDatabaseFactoryMongoClient
如果您使用的是反应式驱动程序,则 SSL 需要 Netty。 如果 Netty 可用且要使用的工厂尚未自定义,则自动配置会自动配置此出厂设置。
有关Spring Data MongoDB的完整详细信息,包括其丰富的对象映射技术,请参阅其参考文档。

Neo4j系列

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

连接到 Neo4j 数据库

要访问 Neo4j 服务器,您可以注入自动配置的 . 默认情况下,实例尝试使用 Bolt 协议连接到 Neo4j 服务器。 以下示例演示如何注入 Neo4j,该 Neo4j 允许您访问 :org.neo4j.driver.Driverlocalhost:7687DriverSessionSpring中文文档

import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.neo4j.driver.Values;

import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final Driver driver;

	public MyBean(Driver driver) {
		this.driver = driver;
	}

	// ...

	public String someMethod(String message) {
		try (Session session = this.driver.session()) {
			return session.executeWrite(
					(transaction) -> transaction
						.run("CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)",
								Values.parameters("message", message))
						.single()
						.get(0)
						.asString());
		}
	}

}
import org.neo4j.driver.*
import org.springframework.stereotype.Component

@Component
class MyBean(private val driver: Driver) {
	// ...
	fun someMethod(message: String?): String {
		driver.session().use { session ->
			return@someMethod session.executeWrite { transaction: TransactionContext ->
				transaction
					.run(
						"CREATE (a:Greeting) SET a.message = \$message RETURN a.message + ', from node ' + id(a)",
						Values.parameters("message", message)
					)
					.single()[0].asString()
			}
		}
	}
}

可以使用属性配置驱动程序的各个方面。 以下示例演示如何配置要使用的 uri 和凭据:spring.neo4j.*Spring中文文档

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

自动配置是使用 创建的。 要微调其配置,请声明一个或多个 Bean。 每个都将按用于构建 .DriverConfigBuilderConfigBuilderCustomizerConfigBuilderDriverSpring中文文档

Spring Data Neo4j 存储库

Spring Data 包括对 Neo4j 的存储库支持。 有关 Spring Data Neo4j 的完整详细信息,请参阅参考文档Spring中文文档

Spring Data Neo4j 与许多其他 Spring Data 模块一样,与 Spring Data JPA 共享通用基础架构。 您可以采用前面的 JPA 示例,并将其定义为 Spring Data Neo4j 而不是 JPA,并且存储库抽象的工作方式相同,如以下示例所示:City@Node@EntitySpring中文文档

import java.util.Optional;

import org.springframework.data.neo4j.repository.Neo4jRepository;

public interface CityRepository extends Neo4jRepository<City, Long> {

	Optional<City> findOneByNameAndState(String name, String state);

}
import org.springframework.data.neo4j.repository.Neo4jRepository
import java.util.Optional

interface CityRepository : Neo4jRepository<City?, Long?> {

	fun findOneByNameAndState(name: String?, state: String?): Optional<City?>?

}

“启动器”支持存储库支持以及事务管理。 Spring Boot 支持经典和反应式 Neo4j 存储库,使用 或 bean。 当 Project Reactor 在类路径上可用时,反应式样式也会自动配置。spring-boot-starter-data-neo4jNeo4jTemplateReactiveNeo4jTemplateSpring中文文档

存储库和实体是通过扫描找到的。 默认情况下,将扫描自动配置包。 您可以分别使用 和 自定义位置以查找存储库和实体。@EnableNeo4jRepositories@EntityScanSpring中文文档

在使用响应式样式的应用程序中,不会自动配置 a。 要启用事务管理,必须在配置中定义以下 Bean:ReactiveTransactionManagerSpring中文文档

import org.neo4j.driver.Driver;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider;
import org.springframework.data.neo4j.core.transaction.ReactiveNeo4jTransactionManager;

@Configuration(proxyBeanMethods = false)
public class MyNeo4jConfiguration {

	@Bean
	public ReactiveNeo4jTransactionManager reactiveTransactionManager(Driver driver,
			ReactiveDatabaseSelectionProvider databaseNameProvider) {
		return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider);
	}

}
import org.neo4j.driver.Driver
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider
import org.springframework.data.neo4j.core.transaction.ReactiveNeo4jTransactionManager

@Configuration(proxyBeanMethods = false)
class MyNeo4jConfiguration {

	@Bean
	fun reactiveTransactionManager(driver: Driver,
			databaseNameProvider: ReactiveDatabaseSelectionProvider): ReactiveNeo4jTransactionManager {
		return ReactiveNeo4jTransactionManager(driver, databaseNameProvider)
	}
}

在使用响应式样式的应用程序中,不会自动配置 a。 要启用事务管理,必须在配置中定义以下 Bean:ReactiveTransactionManagerSpring中文文档

import org.neo4j.driver.Driver;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider;
import org.springframework.data.neo4j.core.transaction.ReactiveNeo4jTransactionManager;

@Configuration(proxyBeanMethods = false)
public class MyNeo4jConfiguration {

	@Bean
	public ReactiveNeo4jTransactionManager reactiveTransactionManager(Driver driver,
			ReactiveDatabaseSelectionProvider databaseNameProvider) {
		return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider);
	}

}
import org.neo4j.driver.Driver
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider
import org.springframework.data.neo4j.core.transaction.ReactiveNeo4jTransactionManager

@Configuration(proxyBeanMethods = false)
class MyNeo4jConfiguration {

	@Bean
	fun reactiveTransactionManager(driver: Driver,
			databaseNameProvider: ReactiveDatabaseSelectionProvider): ReactiveNeo4jTransactionManager {
		return ReactiveNeo4jTransactionManager(driver, databaseNameProvider)
	}
}

Elasticsearch 的

Elasticsearch 是一个开源的分布式 RESTful 搜索和分析引擎。 Spring Boot 为 Elasticsearch 客户端提供了基本的自动配置。Spring中文文档

Spring Boot 支持多个客户端:Spring中文文档

Spring Boot 提供了一个专用的“启动器”,.spring-boot-starter-data-elasticsearchSpring中文文档

使用 REST 客户端连接到 Elasticsearch

Elasticsearch 提供了两个不同的 REST 客户端,您可以使用它们来查询集群:模块中的低级客户端和模块中的 Java API 客户端。 此外,Spring Boot 还支持模块中的反应式客户端。 默认情况下,客户端将以 . 可以使用属性进一步调整客户端的配置方式,如以下示例所示:org.elasticsearch.client:elasticsearch-rest-clientco.elastic.clients:elasticsearch-javaorg.springframework.data:spring-data-elasticsearchlocalhost:9200spring.elasticsearch.*Spring中文文档

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

使用 RestClient 连接到 Elasticsearch

如果你在类路径上,Spring Boot 将自动配置并注册一个 bean。 除了前面描述的属性之外,要进行微调,还可以注册任意数量的 Bean,以实现更高级的定制。 要完全控制客户机的配置,请定义一个 Bean。elasticsearch-rest-clientRestClientRestClientRestClientBuilderCustomizerRestClientBuilderSpring中文文档

此外,如果 在类路径上,则会自动配置 a 以自动发现正在运行的 Elasticsearch 集群中的节点,并在 Bean 上设置它们。 您可以进一步调整配置方式,如以下示例所示:elasticsearch-rest-client-snifferSnifferRestClientSnifferSpring中文文档

spring.elasticsearch.restclient.sniffer.interval=10m
spring.elasticsearch.restclient.sniffer.delay-after-failure=30s
spring:
  elasticsearch:
    restclient:
      sniffer:
        interval: "10m"
        delay-after-failure: "30s"

使用 ElasticsearchClient 连接到 Elasticsearch

如果你在类路径上,Spring Boot 将自动配置并注册一个 bean。co.elastic.clients:elasticsearch-javaElasticsearchClientSpring中文文档

它使用依赖于前面描述的传输。 因此,前面描述的属性可用于配置 . 此外,您可以定义一个 Bean 来进一步控制传输的行为。ElasticsearchClientRestClientElasticsearchClientRestClientOptionsSpring中文文档

使用 ReactiveElasticsearchClient 连接到 Elasticsearch

Spring Data Elasticsearch 以响应式方式查询 Elasticsearch 实例。 如果类路径上有 Spring Data Elasticsearch 和 Reactor,Spring Boot 将自动配置并注册 .ReactiveElasticsearchClientReactiveElasticsearchClientSpring中文文档

它使用依赖于前面描述的传输。 因此,前面描述的属性可用于配置 . 此外,您可以定义一个 Bean 来进一步控制传输的行为。ReactiveElasticsearchclientRestClientReactiveElasticsearchClientRestClientOptionsSpring中文文档

使用 Spring Data 连接到 Elasticsearch

要连接到 Elasticsearch,必须定义一个 bean, 由 Spring Boot 自动配置或由应用程序手动提供(请参阅前面的部分)。 有了这个配置,就可以像任何其他弹簧豆一样注入, 如以下示例所示:ElasticsearchClientElasticsearchTemplateSpring中文文档

import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final ElasticsearchTemplate template;

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

	// ...

	public boolean someMethod(String id) {
		return this.template.exists(id, User.class);
	}

}
import org.springframework.stereotype.Component

@Component
class MyBean(private val template: org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate ) {

	// ...

	fun someMethod(id: String): Boolean {
		return template.exists(id, User::class.java)
	}

}

在存在 和 Reactor 的情况下,Spring Boot 还可以自动配置 ReactiveElasticsearchClient 和 as bean。 它们是其他 REST 客户端的响应式等效物。spring-data-elasticsearchReactiveElasticsearchTemplateSpring中文文档

Spring Data Elasticsearch 存储库

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

事实上,Spring Data JPA 和 Spring Data Elasticsearch 共享相同的通用基础架构。 您可以以前面的 JPA 示例为例,假设它现在是 Elasticsearch 类而不是 JPA,它的工作方式相同。City@Document@EntitySpring中文文档

存储库和文档通过扫描找到。 默认情况下,将扫描自动配置包。 您可以分别使用 和 自定义位置以查找存储库和文档。@EnableElasticsearchRepositories@EntityScanSpring中文文档

有关 Spring Data Elasticsearch 的完整详细信息,请参阅参考文档

Spring Boot 支持经典和响应式 Elasticsearch 存储库,使用 或 bean。 最有可能的是,这些 bean 是由 Spring Boot 自动配置的,因为存在所需的依赖项。ElasticsearchRestTemplateReactiveElasticsearchTemplateSpring中文文档

如果您希望使用自己的模板来支持 Elasticsearch 存储库,您可以添加自己的 或 ,只要它被命名为 。 这同样适用于 和 ,其 bean 名称为 。ElasticsearchRestTemplateElasticsearchOperations@Bean"elasticsearchTemplate"ReactiveElasticsearchTemplateReactiveElasticsearchOperations"reactiveElasticsearchTemplate"Spring中文文档

您可以选择使用以下属性禁用存储库支持:Spring中文文档

spring.data.elasticsearch.repositories.enabled=false
spring:
  data:
    elasticsearch:
      repositories:
        enabled: false
有关 Spring Data Elasticsearch 的完整详细信息,请参阅参考文档

卡珊德拉

Cassandra 是一个开源的分布式数据库管理系统,旨在处理跨许多商用服务器的大量数据。 Spring Boot 为 Cassandra 提供了自动配置,并在其上提供了由 Spring Data Cassandra 提供的抽象。 有一个“启动器”可以方便地收集依赖项。spring-boot-starter-data-cassandraSpring中文文档

连接到 Cassandra

您可以像注入任何其他 Spring Bean 一样注入自动配置的实例或 Cassandra 实例。 这些属性可用于自定义连接。 通常,提供本地数据中心名称,如以下示例所示:CassandraTemplateCqlSessionspring.cassandra.*keyspace-namecontact-pointsSpring中文文档

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

如果所有联系点的端口都相同,则可以使用快捷方式并仅指定主机名,如以下示例所示:Spring中文文档

spring.cassandra.keyspace-name=mykeyspace
spring.cassandra.contact-points=cassandrahost1,cassandrahost2
spring.cassandra.local-datacenter=datacenter1
spring:
  cassandra:
    keyspace-name: "mykeyspace"
    contact-points: "cassandrahost1,cassandrahost2"
    local-datacenter: "datacenter1"
这两个示例与端口默认为 相同。 如果需要配置端口,请使用 .9042spring.cassandra.port

通过设置以下示例中所示的属性,可以将自动配置配置为使用 SSL 与服务器进行通信:CqlSessionSpring中文文档

spring.cassandra.keyspace-name=mykeyspace
spring.cassandra.contact-points=cassandrahost1,cassandrahost2
spring.cassandra.local-datacenter=datacenter1
spring.cassandra.ssl.enabled=true
spring:
  cassandra:
    keyspace-name: "mykeyspace"
    contact-points: "cassandrahost1,cassandrahost2"
    local-datacenter: "datacenter1"
    ssl:
      enabled: true

自定义 SSL 信任材料可以在 SSL 捆绑包中配置,并应用于CqlSessionSpring中文文档

spring.cassandra.keyspace-name=mykeyspace
spring.cassandra.contact-points=cassandrahost1,cassandrahost2
spring.cassandra.local-datacenter=datacenter1
spring.cassandra.ssl.bundle=example
spring:
  cassandra:
    keyspace-name: "mykeyspace"
    contact-points: "cassandrahost1,cassandrahost2"
    local-datacenter: "datacenter1"
    ssl:
      bundle: "example"

Cassandra 驱动程序有自己的配置基础结构,用于在类路径的根目录加载application.confSpring中文文档

默认情况下,Spring Boot 不会查找此类文件,但可以使用 . 如果属性同时存在于配置文件中,则 中的值优先。spring.cassandra.configspring.cassandra.*spring.cassandra.*Spring中文文档

对于更高级的驱动程序定制,您可以注册任意数量的实现 的 Bean。 可以使用 类型的 bean 进行定制。DriverConfigLoaderBuilderCustomizerCqlSessionCqlSessionBuilderCustomizerSpring中文文档

如果您用于创建多个 Bean,请记住构建器是可变的,因此请确保为每个会话注入一个新副本。CqlSessionBuilderCqlSession

以下代码清单显示了如何注入 Cassandra Bean:Spring中文文档

import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final CassandraTemplate template;

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

	// ...

	public long someMethod() {
		return this.template.count(User.class);
	}

}
import org.springframework.data.cassandra.core.CassandraTemplate
import org.springframework.stereotype.Component

@Component
class MyBean(private val template: CassandraTemplate) {

	// ...

	fun someMethod(): Long {
		return template.count(User::class.java)
	}

}

如果添加自己的 类型,它将替换默认值。@BeanCassandraTemplateSpring中文文档

Spring Data Cassandra 存储库

Spring Data 包括对 Cassandra 的基本存储库支持。 目前,这比前面讨论的 JPA 存储库更有限,并且需要带注释的查找器方法。@QuerySpring中文文档

存储库和实体是通过扫描找到的。 默认情况下,将扫描自动配置包。 您可以分别使用 和 自定义位置以查找存储库和实体。@EnableCassandraRepositories@EntityScanSpring中文文档

有关 Spring Data Cassandra 的完整详细信息,请参阅参考文档
这两个示例与端口默认为 相同。 如果需要配置端口,请使用 .9042spring.cassandra.port

Cassandra 驱动程序有自己的配置基础结构,用于在类路径的根目录加载application.confSpring中文文档

默认情况下,Spring Boot 不会查找此类文件,但可以使用 . 如果属性同时存在于配置文件中,则 中的值优先。spring.cassandra.configspring.cassandra.*spring.cassandra.*Spring中文文档

对于更高级的驱动程序定制,您可以注册任意数量的实现 的 Bean。 可以使用 类型的 bean 进行定制。DriverConfigLoaderBuilderCustomizerCqlSessionCqlSessionBuilderCustomizerSpring中文文档

如果您用于创建多个 Bean,请记住构建器是可变的,因此请确保为每个会话注入一个新副本。CqlSessionBuilderCqlSession
有关 Spring Data Cassandra 的完整详细信息,请参阅参考文档

沙发底座

Couchbase 是一个开源、分布式、多模型的面向文档的 NoSQL 数据库,针对交互式应用程序进行了优化。 Spring Boot 为 Couchbase 提供了自动配置,以及 Spring Data Couchbase 在其之上提供的抽象。 有和“启动器”可以方便地收集依赖项。spring-boot-starter-data-couchbasespring-boot-starter-data-couchbase-reactiveSpring中文文档

连接到 Couchbase

您可以通过添加 Couchbase SDK 和一些配置来获得。 这些属性可用于自定义连接。 通常,提供连接字符串、用户名和密码,如以下示例所示:Clusterspring.couchbase.*Spring中文文档

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

也可以自定义某些设置。 例如,以下配置更改了超时以打开新的,并通过引用配置的 SSL 捆绑包来启用 SSL 支持:ClusterEnvironmentBucketSpring中文文档

spring.couchbase.env.timeouts.connect=3s
spring.couchbase.env.ssl.bundle=example
spring:
  couchbase:
    env:
      timeouts:
        connect: "3s"
      ssl:
        bundle: "example"
检查属性了解更多详情。 为了更好地控制,可以使用一个或多个 bean。spring.couchbase.env.*ClusterEnvironmentBuilderCustomizer

Spring Data Couchbase 存储库

Spring Data 包括对 Couchbase 的存储库支持。Spring中文文档

存储库和文档通过扫描找到。 默认情况下,将扫描自动配置包。 您可以分别使用 和 自定义位置以查找存储库和文档。@EnableCouchbaseRepositories@EntityScanSpring中文文档

有关 Spring Data Couchbase 的完整详细信息,请参阅参考文档Spring中文文档

您可以像注入任何其他 Spring Bean 一样注入自动配置的实例,前提是 Bean 可用。 如上所述,当 a 可用且已指定存储桶名称时,会发生这种情况:CouchbaseTemplateCouchbaseClientFactoryClusterSpring中文文档

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

以下示例演示如何注入 Bean:CouchbaseTemplateSpring中文文档

import org.springframework.data.couchbase.core.CouchbaseTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final CouchbaseTemplate template;

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

	// ...

	public String someMethod() {
		return this.template.getBucketName();
	}

}
import org.springframework.data.couchbase.core.CouchbaseTemplate
import org.springframework.stereotype.Component

@Component
class MyBean(private val template: CouchbaseTemplate) {

	// ...

	fun someMethod(): String {
		return template.bucketName
	}

}

您可以在自己的配置中定义一些 bean,以覆盖自动配置提供的 bean:Spring中文文档

为了避免在你自己的配置中对这些名称进行硬编码,你可以重用Spring Data Couchbase提供的。 例如,您可以自定义要使用的转换器,如下所示:BeanNamesSpring中文文档

import org.assertj.core.util.Arrays;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.couchbase.config.BeanNames;
import org.springframework.data.couchbase.core.convert.CouchbaseCustomConversions;

@Configuration(proxyBeanMethods = false)
public class MyCouchbaseConfiguration {

	@Bean(BeanNames.COUCHBASE_CUSTOM_CONVERSIONS)
	public CouchbaseCustomConversions myCustomConversions() {
		return new CouchbaseCustomConversions(Arrays.asList(new MyConverter()));
	}

}
import org.assertj.core.util.Arrays
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.couchbase.config.BeanNames
import org.springframework.data.couchbase.core.convert.CouchbaseCustomConversions

@Configuration(proxyBeanMethods = false)
class MyCouchbaseConfiguration {

	@Bean(BeanNames.COUCHBASE_CUSTOM_CONVERSIONS)
	fun myCustomConversions(): CouchbaseCustomConversions {
		return CouchbaseCustomConversions(Arrays.asList(MyConverter()))
	}

}
检查属性了解更多详情。 为了更好地控制,可以使用一个或多个 bean。spring.couchbase.env.*ClusterEnvironmentBuilderCustomizer

LDAP的

LDAP(轻量级目录访问协议)是一种开放的、供应商中立的行业标准应用程序协议,用于通过 IP 网络访问和维护分布式目录信息服务。 Spring Boot 为任何兼容的 LDAP 服务器提供自动配置,并支持来自 UnboundID 的嵌入式内存 LDAP 服务器。Spring中文文档

LDAP 抽象由 Spring Data LDAP 提供。 有一个“启动器”可以方便地收集依赖项。spring-boot-starter-data-ldapSpring中文文档

连接到 LDAP 服务器

要连接到 LDAP 服务器,请确保声明对“Starter”的依赖关系,或者然后在 application.properties 中声明服务器的 URL,如以下示例所示:spring-boot-starter-data-ldapspring-ldap-coreSpring中文文档

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

如果需要自定义连接设置,可以使用 和 属性。spring.ldap.basespring.ldap.base-environmentSpring中文文档

根据这些设置自动配置 an。 如果 Bean 可用,则该 Bean 与自动配置的 . 如果需要自定义它,例如使用 ,您仍然可以注入自动配置的 . 请确保将自定义标记为,以便自动配置的人使用它。LdapContextSourceDirContextAuthenticationStrategyLdapContextSourcePooledContextSourceLdapContextSourceContextSource@PrimaryLdapTemplateSpring中文文档

Spring Data LDAP 存储库

Spring Data 包括对 LDAP 的存储库支持。Spring中文文档

存储库和文档通过扫描找到。 默认情况下,将扫描自动配置包。 您可以分别使用 和 自定义位置以查找存储库和文档。@EnableLdapRepositories@EntityScanSpring中文文档

有关Spring Data LDAP的完整详细信息,请参阅参考文档。Spring中文文档

您还可以像注入任何其他 Spring Bean 一样注入自动配置的实例,如以下示例所示:LdapTemplateSpring中文文档

import java.util.List;

import org.springframework.ldap.core.LdapTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final LdapTemplate template;

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

	// ...

	public List<User> someMethod() {
		return this.template.findAll(User.class);
	}

}
import org.springframework.ldap.core.LdapTemplate
import org.springframework.stereotype.Component

@Component
class MyBean(private val template: LdapTemplate) {

	// ...

	fun someMethod(): List<User> {
		return template.findAll(User::class.java)
	}

}

嵌入式内存LDAP服务器

出于测试目的,Spring Boot 支持从 UnboundID 自动配置内存中 LDAP 服务器。 若要配置服务器,请添加依赖项并声明属性,如下所示:com.unboundid:unboundid-ldapsdkspring.ldap.embedded.base-dnSpring中文文档

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

可以定义多个 base-dn 值,但是,由于可分辨名称通常包含逗号,因此必须使用正确的表示法来定义它们。Spring中文文档

在 yaml 文件中,可以使用 yaml 列表表示法。在属性文件中,必须将索引作为属性名称的一部分包括在内:Spring中文文档

spring.ldap.embedded.base-dn[0]=dc=spring,dc=io
spring.ldap.embedded.base-dn[1]=dc=vmware,dc=com
spring.ldap.embedded.base-dn:
- "dc=spring,dc=io"
- "dc=vmware,dc=com"

默认情况下,服务器从随机端口启动并触发常规 LDAP 支持。 无需指定属性。spring.ldap.urlsSpring中文文档

如果类路径上有一个文件,则该文件用于初始化服务器。 如果要从其他资源加载初始化脚本,也可以使用该属性。schema.ldifspring.ldap.embedded.ldifSpring中文文档

默认情况下,标准架构用于验证文件。 可以通过设置属性来完全关闭验证。 如果您有自定义属性,则可用于定义自定义属性类型或对象类。LDIFspring.ldap.embedded.validation.enabledspring.ldap.embedded.validation.schemaSpring中文文档

可以定义多个 base-dn 值,但是,由于可分辨名称通常包含逗号,因此必须使用正确的表示法来定义它们。Spring中文文档

在 yaml 文件中,可以使用 yaml 列表表示法。在属性文件中,必须将索引作为属性名称的一部分包括在内:Spring中文文档

spring.ldap.embedded.base-dn[0]=dc=spring,dc=io
spring.ldap.embedded.base-dn[1]=dc=vmware,dc=com
spring.ldap.embedded.base-dn:
- "dc=spring,dc=io"
- "dc=vmware,dc=com"

InfluxDB数据库

InfluxDB 的自动配置已弃用,并计划在 Spring Boot 3.4 中删除,以支持提供自己的 Spring Boot 集成的新 InfluxDB Java 客户端

InfluxDB是一个开源的时序数据库,针对运营监控、应用指标、物联网传感器数据、实时分析等领域的时序数据的快速、高可用性存储和检索进行了优化。Spring中文文档

连接到 InfluxDB

Spring Boot 会自动配置实例,前提是客户端位于类路径上,并且数据库的 URL 是使用 .InfluxDBinfluxdb-javaspring.influx.urlSpring中文文档

如果与 InfluxDB 的连接需要用户和密码,您可以相应地设置 and 属性。spring.influx.userspring.influx.passwordSpring中文文档

InfluxDB 依赖于 OkHttp。 如果您需要调整 http 客户端在后台使用,您可以注册一个 bean。InfluxDBInfluxDbOkHttpClientBuilderProviderSpring中文文档

如果您需要对配置进行更多控制,请考虑注册 Bean。InfluxDbCustomizerSpring中文文档

InfluxDB 的自动配置已弃用,并计划在 Spring Boot 3.4 中删除,以支持提供自己的 Spring Boot 集成的新 InfluxDB Java 客户端