builderSupplier = ctx -> RestTemplateBuilder
@@ -329,16 +324,15 @@ application.addBootstrapper(registry -> registry.register(RestTemplateBuilder.cl
另请参见[自定义要作为 PropertySource 公开的秘密后端](#vault.config.backends.configurer)和`VaultConfigDataLoader`的自定义钩源。
-[](#vault.config.authentication)[5.认证方法](#vault.config.authentication)
-----------
+## [](#vault.config.authentication)[5.认证方法](#vault.config.authentication)
不同的组织对安全性和身份验证有不同的要求。Vault 通过提供多种身份验证方法来反映这种需求。 Spring Cloud Vault 支持令牌和 APPID 身份验证。
-### [](#vault.config.authentication.token)[5.1.令牌认证](#vault.config.authentication.token) ###
+### [](#vault.config.authentication.token)[5.1.令牌认证](#vault.config.authentication.token)
令牌是在 Vault 中进行身份验证的核心方法。令牌身份验证需要使用配置提供一个静态令牌。作为后备,也可以从`~/.vault-token`检索令牌,这是 Vault CLI 用于缓存令牌的默认位置。
-| |令牌身份验证是默认的身份验证方法。
如果一个令牌被公开,则非预期的一方获得对保险库的访问权限,并可以为预期的客户端访问机密。|
+| |令牌身份验证是默认的身份验证方法。
如果令牌被公开,则非预期的一方获得对 Vault 的访问权限,并可以为预期的客户端访问机密。|
|---|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
示例 6.application.yml
@@ -361,9 +355,9 @@ spring.cloud.vault:
* [Vault 文档:CLI 默认为 \~/.vault-token](https://www.vaultproject.io/docs/commands/token-helper)
-### [](#vault.config.authentication.vault-agent)[5.2.保险库代理身份验证](#vault.config.authentication.vault-agent) ###
+### [](#vault.config.authentication.vault-agent)[5.2.保险库代理身份验证](#vault.config.authentication.vault-agent)
-Vault 自 0.11.0 版本以来,通过 Vault Agent 提供了一个 Sidecar 实用程序。Vault Agent 通过其自动验证功能实现了 Spring Vault 的`SessionManager`的功能。应用程序可以通过依赖运行在`localhost`上的 Vault 代理重用缓存的会话凭据。 Spring Vault 可以在没有“X-Vault-Token”头的情况下发送请求。禁用 Spring Vault 的身份验证基础设施,以禁用客户端身份验证和会话管理。
+Vault 自 0.11.0 版本以来,通过 Vault Agent 提供了一个 Sidecar 实用程序。Vault Agent 通过其自动验证功能实现了 Spring Vault 的`SessionManager`的功能。应用程序可以依赖运行在`localhost`上的 Vault 代理重用缓存的会话凭据。 Spring Vault 可以在没有`X-Vault-Token`头的情况下发送请求。禁用 Spring Vault 的身份验证基础设施,以禁用客户端身份验证和会话管理。
示例 7.application.yml
@@ -376,7 +370,7 @@ spring.cloud.vault:
另见:[保险库文档:代理](https://www.vaultproject.io/docs/agent/index.html)
-### [](#vault.config.authentication.appid)[5.3.APPID 身份验证](#vault.config.authentication.appid) ###
+### [](#vault.config.authentication.appid)[5.3.APPID 身份验证](#vault.config.authentication.appid)
Vault 支持[AppId](https://www.vaultproject.io/docs/auth/app-id.html)身份验证,该验证由两个难以猜测的令牌组成。APPID 默认为静态配置的`spring.application.name`。第二个标记是 userid,它是由应用程序决定的一部分,通常与运行时环境相关。IP 地址、MAC 地址或 Docker 容器名称都是很好的例子。 Spring Cloud Vault Config 支持 IP 地址、MAC 地址和静态用户 ID(例如,通过系统属性提供)。IP 和 MAC 地址表示为十六进制编码的 SHA256 散列。
@@ -395,7 +389,7 @@ spring.cloud.vault:
* `app-id-path`设置要使用的 appid 挂载的路径
-* `user-id`设置 userid 方法。可能的值是`IP_ADDRESS`、`mac_address’或实现自定义`AppIdUserIdMechanism`的类名
+* `user-id`设置 userid 方法。可能的值是`IP_ADDRESS`、`MAC_ADDRESS`或实现自定义`AppIdUserIdMechanism`的类名
从命令行生成 IP 地址 userid 的相应命令是:
@@ -403,10 +397,10 @@ spring.cloud.vault:
$ echo -n 192.168.99.1 | sha256sum
```
-| |包含`echo`的换行将导致不同的散列值,因此请确保包含`-n`标志。|
+| |包含`echo`的换行符会导致不同的散列值,因此请确保包含`-n`标志。|
|---|---------------------------------------------------------------------------------------------------------|
-基于 MAC 地址的用户 ID 从本地主机绑定的设备获得他们的网络设备。该配置还允许指定`network-interface`提示来选择正确的设备。“network-interface”的值是可选的,可以是接口名称或接口索引(基于 0)。
+基于 MAC 地址的用户 ID 从本地主机绑定的设备获得他们的网络设备。该配置还允许指定`network-interface`提示来选择正确的设备。`network-interface`的值是可选的,可以是接口名称或接口索引(基于 0)。
示例 9.使用 SHA256MAC-Address Userid 的 application.yml
@@ -429,9 +423,9 @@ $ echo -n 0AFEDE1234AC | sha256sum
| |MAC 地址是大写的,不带冒号。
包括`echo`的换行将导致不同的散列值,因此请确保包含`-n`标志。|
|---|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-#### [](#custom-userid)[5.3.1.自定义用户 ID](#custom-userid) ####
+#### [](#custom-userid)[5.3.1.自定义用户 ID](#custom-userid)
-用户 ID 生成是一种开放机制。你可以将 ` Spring.cloud.vault.app-id.user-id` 设置为任意字符串,配置的值将用作静态 userid。
+用户 ID 生成是一种开放机制。你可以将`spring.cloud.vault.app-id.user-id`设置为任意字符串,并且配置的值将用作静态用户 ID。
一种更高级的方法允许你将`spring.cloud.vault.app-id.user-id`设置为类名。这个类必须位于你的 Classpath 上,并且必须实现`org.springframework.cloud.vault.AppIdUserIdMechanism`接口和`createUserId`方法。 Spring Cloud Vault 将在每次使用 APPID 进行身份验证以获得令牌时通过调用来获得用户 ID。
@@ -459,13 +453,13 @@ public class MyUserIdMechanism implements AppIdUserIdMechanism {
另见:[Vault 文档:使用应用程序 ID Auth 后台](https://www.vaultproject.io/docs/auth/app-id.html)
-### [](#approle-authentication)[5.4.Approle 身份验证](#approle-authentication) ###
+### [](#approle-authentication)[5.4.Approle 身份验证](#approle-authentication)
[AppRole](https://www.vaultproject.io/docs/auth/app-id.html)用于机器身份验证,就像不推荐的(因为 Vault0.6.1)[APPID 身份验证](#vault.config.authentication.appid)一样。Approle 身份验证由两个难以猜测的(秘密)令牌组成:ROLEID 和 SECTROTID。
Spring Vault 支持各种接近场景(推/拉模式和包装)。
-Roleid 和可选的 SecretID 必须由配置提供, Spring Vault 不会查找这些或创建自定义的 SecretID。
+ROLEID 和可选的 SecretID 必须通过配置提供, Spring Vault 不会查找这些或创建自定义的 SecretID。
示例 12.approle 身份验证属性的 application.yml
@@ -532,7 +526,7 @@ spring.cloud.vault:
另见:[Vault 文档:使用 Approle Auth 后端](https://www.vaultproject.io/docs/auth/approle.html)
-### [](#vault.config.authentication.awsec2)[5.5.AWS-EC2 身份验证](#vault.config.authentication.awsec2) ###
+### [](#vault.config.authentication.awsec2)[5.5.AWS-EC2 身份验证](#vault.config.authentication.awsec2)
[aws-ec2](https://www.vaultproject.io/docs/auth/aws-ec2.html)Auth 后端为 AWS EC2 实例提供了一种安全的引入机制,允许自动检索保险库令牌。与大多数 Vault 身份验证后端不同,该后端不需要首次部署或提供安全敏感的凭据(令牌、用户名/密码、客户端证书等)。相反,它将 AWS 视为受信任的第三方,并使用以密码签名的动态元数据信息来唯一地表示每个 EC2 实例。
@@ -545,11 +539,11 @@ spring.cloud.vault:
在默认情况下,AWS-EC2 身份验证使 Nonce 能够遵循信任第一次使用(Tofu)原则。任何意外获得 PKCS#7 身份元数据访问权限的一方都可以对 Vault 进行身份验证。
-在第一次登录期间, Spring Cloud Vault 生成一个 Nonce,该 Nonce 存储在实例 ID 旁边的 auth 后台。重新验证需要发送相同的 nonce。其他任何一方都没有 Nonce,可以在 Vault 中发出警报,以进行进一步的调查。
+在第一次登录期间, Spring Cloud Vault 生成一个 nonce,该 nonce 存储在实例 ID 旁边的 auth 后台。重新验证需要发送相同的 nonce。其他任何一方都没有 Nonce,可以在 Vault 中发出警报,以进行进一步的调查。
-nonce 保存在内存中,并在应用程序重新启动时丢失。你可以使用`spring.cloud.vault.aws-ec2.nonce`配置静态 nonce。
+nonce 保存在内存中,并在应用程序重新启动时丢失。可以使用`spring.cloud.vault.aws-ec2.nonce`配置静态 nonce。
-AWS-EC2 身份验证角色是可选的,并且是 AMI 的默认值。你可以通过设置“ Spring.cloud.vault.aws-ec2.role”属性来配置身份验证角色。
+AWS-EC2 身份验证角色是可选的,并且是 AMI 的默认值。你可以通过设置`spring.cloud.vault.aws-ec2.role`属性来配置身份验证角色。
示例 15.已配置角色的 application.yml
@@ -584,13 +578,13 @@ spring.cloud.vault:
另见:[Vault 文档:使用 AWS Auth 后端](https://www.vaultproject.io/docs/auth/aws.html)
-### [](#vault.config.authentication.awsiam)[5.6.AWS-IAM 身份验证](#vault.config.authentication.awsiam) ###
+### [](#vault.config.authentication.awsiam)[5.6.AWS-IAM 身份验证](#vault.config.authentication.awsiam)
[aws](https://www.vaultproject.io/docs/auth/aws-ec2.html)后端为 AWS IAM 角色提供了一种安全的身份验证机制,允许基于正在运行的应用程序的当前 IAM 角色使用 Vault 进行自动身份验证。与大多数 Vault 身份验证后端不同,该后端不需要首次部署或提供安全敏感的凭据(令牌、用户名/密码、客户端证书等)。相反,它将 AWS 视为受信任的第三方,并使用调用者与其 IAM 凭据签署的 4 条信息来验证调用者确实在使用该 IAM 角色。
自动计算应用程序正在运行的当前 IAM 角色。如果你在 AWS ECS 上运行你的应用程序,那么应用程序将使用分配给正在运行的容器的 ECS 任务的 IAM 角色。如果你在 EC2 实例之上裸体运行你的应用程序,那么使用的 IAM 角色将是分配给 EC2 实例的角色。
-当使用 AWS-IAM 身份验证时,你必须在 Vault 中创建一个角色,并将其分配给你的 IAM 角色。一个空的`role`默认为当前 IAM 角色的友好名称。
+当使用 AWS-IAM 身份验证时,你必须在 Vault 中创建一个角色,并将其分配给你的 IAM 角色。一个空的`role`默认为友好名称当前 IAM 角色。
示例 17.application.yml 具有所需的 AWS-IAM 身份验证属性
@@ -619,11 +613,11 @@ spring.cloud.vault:
* `endpoint-uri`设置用于`iam_request_url`参数的 AWS STS API 的值。
-AWS-IAM 需要 AWS Java SDK 依赖关系(“com.amazonaws:AWS-Java-SDK-Core”),因为身份验证实现使用 AWS SDK 类型来进行凭据和请求签名。
+AWS-IAM 需要 AWS Java SDK 依赖项(`com.amazonaws:aws-java-sdk-core`),因为身份验证实现使用 AWS SDK 类型来进行凭据和请求签名。
另见:[Vault 文档:使用 AWS Auth 后端](https://www.vaultproject.io/docs/auth/aws.html)
-### [](#vault.config.authentication.azuremsi)[5.7.Azure MSI 认证](#vault.config.authentication.azuremsi) ###
+### [](#vault.config.authentication.azuremsi)[5.7.Azure MSI 认证](#vault.config.authentication.azuremsi)
[azure](https://www.vaultproject.io/docs/auth/azure.html)Auth 后端为 Azure VM 实例提供了一种安全的引入机制,允许自动检索 Vault 令牌。与大多数 Vault 身份验证后端不同,该后端不需要首次部署或提供安全敏感的凭据(令牌、用户名/密码、客户端证书等)。相反,它将 Azure 视为可信任的第三方,并使用可绑定到 VM 实例的托管服务标识和实例元数据信息。
@@ -664,9 +658,9 @@ Azure MSI 身份验证从实例元数据服务获得有关虚拟机的环境详
* [Azure 文档:Azure 实例元数据服务](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service)
-### [](#vault.config.authentication.clientcert)[5.8.TLS 证书认证](#vault.config.authentication.clientcert) ###
+### [](#vault.config.authentication.clientcert)[5.8.TLS 证书认证](#vault.config.authentication.clientcert)
-`cert`Auth 后台允许使用 SSL/TLS 客户端证书进行身份验证,这些证书由 CA 签名或自签名。
+`cert`Auth 后台允许使用 SSL/TLS 客户机证书进行身份验证,这些证书由 CA 签名或自签名。
要启用`cert`身份验证,你需要:
@@ -690,9 +684,9 @@ spring.cloud.vault:
另见:[Vault 文档:使用 CERTAuth 后端](https://www.vaultproject.io/docs/auth/cert.html)
-### [](#vault.config.authentication.cubbyhole)[5.9.空穴身份验证](#vault.config.authentication.cubbyhole) ###
+### [](#vault.config.authentication.cubbyhole)[5.9.空穴身份验证](#vault.config.authentication.cubbyhole)
-Cubbyhole 身份验证使用 Vault 原语提供安全的身份验证工作流。Cubbyhole 身份验证使用令牌作为主要登录方法。一个短暂的令牌用于从 Vault 的 Cubbyhole 秘密后端获得第二个登录 VaultToken。登录令牌通常寿命更长,并用于与 Vault 交互。登录令牌将从存储在`/cubbyhole/response`的包装响应中检索。
+Cubbyhole 身份验证使用 Vault 原语来提供一个安全的身份验证工作流。Cubbyhole 身份验证使用令牌作为主要登录方法。一个短暂的令牌用于从 Vault 的 Cubbyhole 秘密后端获得第二个登录 VaultToken。登录令牌通常寿命更长,并用于与 Vault 交互。登录令牌将从存储在`/cubbyhole/response`的包装响应中检索。
**创建一个包装好的令牌**
@@ -727,7 +721,7 @@ spring.cloud.vault:
* [保险库文档:响应包装](https://www.vaultproject.io/docs/concepts/response-wrapping.html)
-### [](#vault.config.authentication.gcpgce)[5.10.GCP-GCE 认证](#vault.config.authentication.gcpgce) ###
+### [](#vault.config.authentication.gcpgce)[5.10.GCP-GCE 认证](#vault.config.authentication.gcpgce)
[gcp](https://www.vaultproject.io/docs/auth/gcp.html)Auth 后端允许 Vault 通过使用现有的 GCP(Google Cloud Platform)IAM 和 GCE 凭据登录。
@@ -767,13 +761,13 @@ spring.cloud.vault:
* [GCP 文件:验证实例的身份](https://cloud.google.com/compute/docs/instances/verifying-instance-identity)
-### [](#vault.config.authentication.gcpiam)[5.11.GCP-IAM 认证](#vault.config.authentication.gcpiam) ###
+### [](#vault.config.authentication.gcpiam)[5.11.GCP-IAM 认证](#vault.config.authentication.gcpiam)
[gcp](https://www.vaultproject.io/docs/auth/gcp.html)Auth 后端允许 Vault 通过使用现有的 GCP(Google Cloud Platform)IAM 和 GCE 凭据登录。
-GCP,IAM 身份验证以 JSON Web 令牌的形式为服务帐户创建签名。通过调用 GCPIAM 的[`Projects.ServiceAccounts.signjwt’](https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/signJwt)API,可以获得服务帐户的 JWT。调用者针对 GCPIAM 进行身份验证,并由此证明其身份。此保险库后端将 GCP 视为受信任的第三方。
+GCP,IAM 身份验证以 JSON Web 令牌的形式为服务帐户创建签名。通过调用 GCPIAM 的[`projects.serviceAccounts.signJwt`](https://cloud.google.com/iam/reference/rest/v1/projects.serviceaccounts/signjwt)API,可以获得服务帐户的 JWT。调用者针对 GCPIAM 进行身份验证,并由此证明其身份。此保险库后端将 GCP 视为受信任的第三方。
-IAM 凭据可以从运行时环境(特别是[google_application_creditions’](https://cloud.google.com/docs/authentication/production)环境变量、Google Compute 元数据服务)获得,也可以从外部提供,例如 JSON 或 Base64 编码。JSON 是首选的表单,因为它带有调用`projects.serviceAccounts.signJwt`所需的项目 ID 和服务帐户标识符。
+IAM 凭据可以从运行时环境,特别是[`GOOGLE_APPLICATION_CREDENTIALS`](https://cloud.google.com/DOCS/Authentication/Production)环境变量、Google Compute 元数据服务中获得,或者从外部提供,例如 JSON 或 base64 编码。JSON 是首选的表单,因为它带有调用`projects.serviceAccounts.signJwt`所需的项目 ID 和服务帐户标识符。
示例 26.带有所需 GCP 的 application.yml-IAM 身份验证属性
@@ -814,7 +808,7 @@ spring.cloud.vault:
* `service-account`允许将服务帐户 ID 重写为特定值。从获得的凭据到服务帐户的默认值。
-GCP 的 IAM 认证需要 Google Cloud Java SDK 依赖关系(“com.google.apis:Google-api-services-IAM”和`com.google.auth:google-auth-library-oauth2-http`),因为认证实现使用 Google API 进行凭据和 JWT 签名。
+GCPIAM 身份验证需要 Google Cloud Java SDK 依赖项(`com.google.apis:google-api-services-iam`和`com.google.auth:google-auth-library-oauth2-http`),因为身份验证实现使用 Google API 进行凭据和 JWT 签名。
| |Google 凭据需要一个 OAuth2 令牌来维护令牌生命周期。
所有 API 都是同步的,因此,`GcpIamAuthentication`不支持反应性使用所需的`AuthenticationSteps`。|
|---|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -825,7 +819,7 @@ GCP 的 IAM 认证需要 Google Cloud Java SDK 依赖关系(“com.google.apis
* [GCP 文档:projects.serviceaccounts.signjwt](https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/signJwt)
-### [](#vault.config.authentication.kubernetes)[5.12.Kubernetes 认证](#vault.config.authentication.kubernetes) ###
+### [](#vault.config.authentication.kubernetes)[5.12.Kubernetes 认证](#vault.config.authentication.kubernetes)
Kubernetes 身份验证机制(从 Vault0.8.3 开始)允许使用 Kubernetes 服务帐户令牌对 Vault 进行身份验证。身份验证是基于角色的,角色绑定到服务帐户名和名称空间。
@@ -854,9 +848,9 @@ spring.cloud.vault:
* [Kubernetes 文档:为 PODS 配置服务帐户](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/)
-### [](#vault.config.authentication.pcf)[5.13.Pivotal CloudFoundry 身份验证](#vault.config.authentication.pcf) ###
+### [](#vault.config.authentication.pcf)[5.13.Pivotal CloudFoundry 认证](#vault.config.authentication.pcf)
-[pcf](https://www.vaultproject.io/docs/auth/pcf.html)Auth 后端为在 Pivotal 的 CloudFoundry 实例中运行的应用程序提供了一种安全的引入机制,允许自动检索保险库令牌。与大多数 Vault 身份验证后端不同,该后端不需要首次部署或配置安全敏感的凭据(令牌、用户名/密码、客户端证书等),因为身份配置由 PCF 本身处理。相反,它将 PCF 视为受信任的第三方,并使用托管实例标识。
+[pcf](https://www.vaultproject.io/docs/auth/pcf.html)Auth 后端为在 Pivotal 的 CloudFoundry 实例中运行的应用程序提供了一种安全的引入机制,允许自动检索保险库令牌。与大多数 Vault 身份验证后端不同,该后端不需要首次部署或配置安全敏感凭据(令牌、用户名/密码、客户端证书等),因为身份配置由 PCF 本身处理。相反,它将 PCF 视为受信任的第三方,并使用托管实例标识。
示例 29.带有必需的 PCF 身份验证属性的 application.yml
@@ -867,7 +861,7 @@ spring.cloud.vault:
role: my-dev-role
```
-具有所有 PCF 身份验证属性的 application.yml
+示例 30.application.yml 具有所有 PCF 身份验证属性
```
spring.cloud.vault:
@@ -887,35 +881,34 @@ spring.cloud.vault:
* `instance-key`设置到 PCF 实例标识密钥的路径。默认值为`${CF_INSTANCE_KEY}`ENV 变量。
-| |PCF 身份验证需要 BouncyCastle(BCPKIX-JDK15on)在 Classpath 上进行 RSA PSS 签名。|
+| |PCF 身份验证要求 BouncyCastle(BCPKIX-JDK15on)在 Classpath 上进行 RSA PSS 签名。|
|---|-----------------------------------------------------------------------------------------------------|
另见:[Vault 文档:使用 PCF Auth 后端](https://www.vaultproject.io/docs/auth/pcf.html)
-[](#vault.config.acl)[6.ACL 要求](#vault.config.acl)
-----------
+## [](#vault.config.acl)[6.ACL 要求](#vault.config.acl)
-本节将解释 Spring Vault 访问哪些路径,以便你可以从所需的功能中获得策略声明。
+本节将解释 Spring Vault 访问哪些路径,以便你可以从所需的功能派生出你的策略声明。
|Capability|关联的 HTTP 动词|
|----------|---------------------|
-| create |`POST`/`put`|
+| create |`POST`/`PUT`|
| read |`GET`|
-| update |`POST`/`put`|
+| update |`POST`/`PUT`|
| delete |`DELETE`|
-| list |`LIST`|
+| list |`LIST`(`GET`)|
另见[WWW.vaultproject.io/guides/identity/policies](https://www.vaultproject.io/guides/identity/policies)。
-### [](#authentication-2)[6.1.认证](#authentication-2) ###
+### [](#authentication-2)[6.1.认证](#authentication-2)
登录:`POST auth/$authMethod/login`
-### [](#keyvalue-mount-discovery)[6.2.KeyValue Mount 发现](#keyvalue-mount-discovery) ###
+### [](#keyvalue-mount-discovery)[6.2.KeyValue Mount 发现](#keyvalue-mount-discovery)
`GET sys/internal/ui/mounts/$mountPath`
-### [](#secretleasecontainer)[6.3.分泌物酶抑制剂](#secretleasecontainer) ###
+### [](#secretleasecontainer)[6.3.分泌物酶抑制剂](#secretleasecontainer)
`SecretLeaseContainer`根据配置的租赁端点使用不同的路径。
@@ -925,13 +918,13 @@ spring.cloud.vault:
* 续约:`PUT sys/renew`
-`LeaseEndpoints.Leases`
+`LeaseEndpoints.Leases`(`SysLeases`)
* 撤销:`PUT sys/leases/revoke`
* 续约:`PUT sys/leases/renew`
-### [](#session-management)[6.4.会话管理](#session-management) ###
+### [](#session-management)[6.4.会话管理](#session-management)
* 令牌查找:`GET auth/token/lookup-self`
@@ -939,12 +932,11 @@ spring.cloud.vault:
* 撤销:`POST auth/token/revoke-self`
-[](#vault.config.backends)[7.秘密后端](#vault.config.backends)
-----------
+## [](#vault.config.backends)[7.秘密后端](#vault.config.backends)
-### [](#vault.config.backends.kv.versioned)[7.1.键值后端](#vault.config.backends.kv.versioned) ###
+### [](#vault.config.backends.kv.versioned)[7.1.键值后端](#vault.config.backends.kv.versioned)
-Spring Cloud Vault 支持两个键值秘密后端,版本控制的(V2)和未版本控制的(V1)。键值后端允许将任意值存储为键值存储。单个上下文可以存储一个或多个键值元组。上下文可以按层次进行组织。 Spring Cloud Vault 确定自己的秘密是否正在使用版本控制,并将路径映射到其适当的 URL。 Spring Cloud Vault 允许使用应用程序名称,以及与活动配置文件相结合的默认上下文名。
+Spring Cloud Vault 支持两个键值秘密后端,即版本控制的(V2)和非版本控制的(V1)。键值后端允许将任意值存储为键值存储。单个上下文可以存储一个或多个键值元组。上下文可以按层次进行组织。 Spring Cloud Vault 确定一个秘密是否正在使用版本控制,并将路径映射到其适当的 URL。 Spring Cloud Vault 允许使用应用程序名称,并将默认的上下文名(`application`)与活动配置文件结合起来。
```
/secret/{application}/{profile}
@@ -1014,9 +1006,9 @@ spring.cloud.vault:
* [Vault 文档:使用 KV Secrets 引擎-Version2(版本管理的键值后端)](https://www.vaultproject.io/docs/secrets/kv/kv-v2.html)
-### [](#vault.config.backends.consul)[7.2. Consul](#vault.config.backends.consul) ###
+### [](#vault.config.backends.consul)[7.2.执政官](#vault.config.backends.consul)
-Spring Cloud Vault 可以获得用于 HashiCorp 领事的凭据。Consul 集成要求`spring-cloud-vault-config-consul`依赖关系。
+Spring Cloud保险库可以获得用于 HashiCorp 领事的凭据。Consul 集成要求`spring-cloud-vault-config-consul`依赖关系。
例 31。 POM.xml
@@ -1030,9 +1022,9 @@ Spring Cloud Vault 可以获得用于 HashiCorp 领事的凭据。Consul 集成
```
-可以通过设置 ` Spring.cloud.vault.consul.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.consul.role=…`的角色名来启用集成。
+可以通过设置`spring.cloud.vault.consul.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.consul.role=…`的角色名来启用集成。
-所获得的令牌存储在`spring.cloud.consul.token`中,因此使用 Spring Cloud Consul 可以提取生成的凭据,而无需进一步配置。你可以通过设置`spring.cloud.vault.consul.token-property`来配置属性名称。
+所获得的令牌存储在`spring.cloud.consul.token`中,因此使用 Spring Cloud Consul 可以在不需要进一步配置的情况下获取生成的凭据。你可以通过设置`spring.cloud.vault.consul.token-property`来配置属性名称。
```
spring.cloud.vault:
@@ -1047,13 +1039,13 @@ spring.cloud.vault:
* `role`设置 consul 角色定义的角色名
-* `backend`设置要使用的 Consul 坐骑的路径
+* `backend`设置要使用的执政架的路径
* `token-property`设置用于存储 consul ACL 令牌的属性名称
另见:[保险库文档:与保险库建立领事关系](https://www.vaultproject.io/docs/secrets/consul/index.html)
-### [](#vault.config.backends.rabbitmq)[7.3. RabbitMQ](#vault.config.backends.rabbitmq) ###
+### [](#vault.config.backends.rabbitmq)[7.3.RabbitMQ](#vault.config.backends.rabbitmq)
Spring Cloud Vault 可以获得 RabbitMQ 的凭据。
@@ -1071,9 +1063,9 @@ RabbitMQ 集成需要`spring-cloud-vault-config-rabbitmq`依赖项。
```
-可以通过设置 ` Spring.cloud.vault.rabbitmq.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.rabbitmq.role=…`的角色名来启用集成。
+可以通过设置`spring.cloud.vault.rabbitmq.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.rabbitmq.role=…`的角色名来启用集成。
-用户名和密码存储在`spring.rabbitmq.username`和`spring.rabbitmq.password`中,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。你可以通过设置`spring.cloud.vault.rabbitmq.username-property`和 ` Spring.cloud.vault.rabbitmq.password-property` 来配置属性名称。
+用户名和密码存储在`spring.rabbitmq.username`和`spring.rabbitmq.password`中,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。你可以通过设置`spring.cloud.vault.rabbitmq.username-property`和`spring.cloud.vault.rabbitmq.password-property`来配置属性名称。
```
spring.cloud.vault:
@@ -1097,7 +1089,7 @@ spring.cloud.vault:
另见:[Vault 文档:使用 Vault 设置 RabbitMQ](https://www.vaultproject.io/docs/secrets/rabbitmq/index.html)
-### [](#vault.config.backends.aws)[7.4. AWS](#vault.config.backends.aws) ###
+### [](#vault.config.backends.aws)[7.4. AWS](#vault.config.backends.aws)
Spring Cloud Vault 可以获得 AWS 的凭据。
@@ -1115,7 +1107,7 @@ AWS 集成需要`spring-cloud-vault-config-aws`依赖关系。
```
-可以通过设置 ` Spring.cloud.vault.aws=true`(默认`false`)并提供带有`spring.cloud.vault.aws.role=…`的角色名来启用集成。
+可以通过设置`spring.cloud.vault.aws=true`(默认`false`)并提供带有`spring.cloud.vault.aws.role=…`的角色名来启用集成。
支持的 AWS 凭据类型:
@@ -1127,7 +1119,7 @@ AWS 集成需要`spring-cloud-vault-config-aws`依赖关系。
访问密钥和密钥存储在`cloud.aws.credentials.accessKey`和`cloud.aws.credentials.secretKey`中。因此,使用 Spring Cloud AWS 将在不需要进一步配置的情况下获取生成的凭据。
-你可以通过设置`spring.cloud.vault.aws.access-key-property`和 ` Spring.cloud.vault.aws.secret-key-property` 来配置属性名称。
+可以通过设置`spring.cloud.vault.aws.access-key-property`和`spring.cloud.vault.aws.secret-key-property`来配置属性名。
对于 STS 安全令牌,你可以通过设置`spring.cloud.vault.aws.session-token-key-property`来配置属性名。安全令牌存储在`cloud.aws.credentials.sessionToken`(默认)下。
@@ -1167,7 +1159,7 @@ spring.cloud.vault:
* `access-key-property`设置用于存储 AWS 访问密钥的属性名
-* `secret-key-property`设置存储 AWS 密钥的属性名
+* `secret-key-property`设置用于存储 AWS 密钥的属性名
* `session-token-key-property`设置用于存储 AWS STS 安全令牌的属性名称。
@@ -1175,12 +1167,11 @@ spring.cloud.vault:
* 当使用`assumed_role`或`federation_token`时,`ttl`设置 STS 令牌的 TTL。Vault 角色指定的 TTL 的默认值。最小/最大值也仅限于 AWS 对 STS 的支持。
-* `role-arn`将 IAM 角色设置为在使用`assumed_role`时假设为保险库角色配置了多个 IAM 角色。
+* `role-arn`设置 IAM 角色,以假设在使用`assumed_role`时,为 Vault 角色配置了多个 IAM 角色。
另见:[Vault 文档:使用 Vault 设置 AWS](https://www.vaultproject.io/docs/secrets/aws/index.html)
-[](#vault.config.backends.database-backends)[8.数据库后端](#vault.config.backends.database-backends)
-----------
+## [](#vault.config.backends.database-backends)[8.数据库后端](#vault.config.backends.database-backends)
Vault 支持多个数据库秘密后端,以根据配置的角色动态生成数据库凭据。这意味着需要访问数据库的服务不再需要配置凭据:它们可以从 Vault 请求凭据,并使用 Vault 的租赁机制更容易地滚动密钥。
@@ -1219,11 +1210,11 @@ Vault 从 0.7.1 开始提供专用的`database`秘密后端,允许通过插件
| |启用多个符合 JDBC 的数据库将生成凭据,并在默认情况下将它们存储在相同的属性键中,因此需要单独配置 JDBC 秘密的属性名。|
|---|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-### [](#vault.config.backends.database)[8.1. Database](#vault.config.backends.database) ###
+### [](#vault.config.backends.database)[8.1.数据库](#vault.config.backends.database)
-Spring Cloud Vault 可以获得在[WWW.vaultproject.io/api/secret/databases/index.html](https://www.vaultproject.io/api/secret/databases/index.html)处列出的任何数据库的凭据。可以通过设置 ` Spring.cloud.vault.database.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.database.role=…`的角色名来启用集成。
+Spring Cloud Vault 可以获得在[WWW.vaultproject.io/api/secret/databases/index.html](https://www.vaultproject.io/api/secret/databases/index.html)处列出的任何数据库的凭据。可以通过设置`spring.cloud.vault.database.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.database.role=…`的角色名来启用集成。
-虽然数据库后端是通用的,但`spring.cloud.vault.database`专门针对 JDBC 数据库。用户名和密码可从`spring.datasource.username`和`spring.datasource.password`属性中获得,因此使用 Spring 引导将为你的`DataSource`获取生成的凭据,而无需进一步配置。你可以通过设置“ Spring.cloud.vault.database.username-property”和“ Spring.cloud.vault.database.password-property”来配置属性名称。
+虽然数据库后端是通用的,但`spring.cloud.vault.database`专门针对 JDBC 数据库。用户名和密码可从`spring.datasource.username`和`spring.datasource.password`属性中获得,因此使用 Spring 引导将为你的`DataSource`获取生成的凭据,而无需进一步配置。可以通过设置`spring.cloud.vault.database.username-property`和`spring.cloud.vault.database.password-property`来配置属性名称。
```
spring.cloud.vault:
@@ -1235,7 +1226,7 @@ spring.cloud.vault:
password-property: spring.datasource.password
```
-### [](#vault.config.backends.databases)[8.2.多个数据库](#vault.config.backends.databases) ###
+### [](#vault.config.backends.databases)[8.2.多个数据库](#vault.config.backends.databases)
有时,单个数据库的凭据是不够的,因为一个应用程序可能会连接到两个或更多个同类数据库。从版本 3.0.5 开始, Spring Vault 支持在`spring.cloud.vault.databases.*`名称空间下配置多个数据库秘密后端。
@@ -1275,14 +1266,14 @@ spring.cloud.vault:
| |Spring Cloud Vault 不支持在达到最大租赁时间时获取新的凭据并用它们配置你的`DataSource`。
即,如果 Vault 中数据库角色的`max_ttl`被设置为`24h`,这意味着在你的应用程序启动 24 小时后,它将不再能够使用数据库进行身份验证。|
|---|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-### [](#vault.config.backends.cassandra)[8.3.Apache Cassandra](#vault.config.backends.cassandra) ###
+### [](#vault.config.backends.cassandra)[8.3.Apache Cassandra](#vault.config.backends.cassandra)
| |`cassandra`后端在 Vault0.7.1 中已被弃用,建议使用`database`后端并将其挂载为`cassandra`。|
|---|-------------------------------------------------------------------------------------------------------------------------------------------|
-Spring Cloud Vault 可以获得 Apache Cassandra 的凭据。可以通过设置 ` Spring.cloud.vault.cassandra.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.cassandra.role=…`的角色名来启用集成。
+Spring Cloud Vault 可以获得 Apache Cassandra 的凭据。可以通过设置`spring.cloud.vault.cassandra.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.cassandra.role=…`的角色名来启用集成。
-用户名和密码可从`spring.data.cassandra.username`和`spring.data.cassandra.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。你可以通过设置“ Spring.cloud.vault.cassandra.username-property”和“ Spring.cloud.vault.cassandra.password-property”来配置属性名称。
+用户名和密码可从`spring.data.cassandra.username`和`spring.data.cassandra.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。可以通过设置`spring.cloud.vault.cassandra.username-property`和`spring.cloud.vault.cassandra.password-property`来配置属性名称。
```
spring.cloud.vault:
@@ -1306,11 +1297,11 @@ spring.cloud.vault:
另见:[Vault 文档:使用 Vault 设置 Apache Cassandra](https://www.vaultproject.io/docs/secrets/cassandra/index.html)
-### [](#vault.config.backends.couchbase)[8.4.CouchBase 数据库](#vault.config.backends.couchbase) ###
+### [](#vault.config.backends.couchbase)[8.4.CouchBase 数据库](#vault.config.backends.couchbase)
-Spring Cloud Vault 可以获得用于 CouchBase 的凭据。可以通过设置 ` Spring.cloud.vault.couchbase.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.couchbase.role=…`的角色名来启用集成。
+Spring Cloud Vault 可以获得 CouchBase 的凭据。可以通过设置`spring.cloud.vault.couchbase.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.couchbase.role=…`的角色名来启用集成。
-用户名和密码可从`spring.couchbase.username`和`spring.couchbase.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。你可以通过设置 ` Spring.cloud.vault.couchbase.username-property` 和 ` Spring.cloud.vault.couchbase.password-property` 来配置属性名称。
+用户名和密码可从`spring.couchbase.username`和`spring.couchbase.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。可以通过设置`spring.cloud.vault.couchbase.username-property`和`spring.cloud.vault.couchbase.password-property`来配置属性名。
```
spring.cloud.vault:
@@ -1334,11 +1325,11 @@ spring.cloud.vault:
另见:[CouchBase 数据库插件文档](https://github.com/hashicorp/vault-plugin-database-couchbase)
-### [](#vault.config.backends.elasticsearch)[8.5.Elasticsearch](#vault.config.backends.elasticsearch) ###
+### [](#vault.config.backends.elasticsearch)[8.5.Elasticsearch](#vault.config.backends.elasticsearch)
-Spring Cloud Vault 可以获得自 3.0 版本以来用于 ElasticSearch 的凭据。可以通过设置 ` Spring.cloud.vault.elasticsearch.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.elasticsearch.role=…`的角色名来启用集成。
+Spring Cloud Vault 可以获得自 3.0 版本以来用于 ElasticSearch 的凭据。可以通过设置`spring.cloud.vault.elasticsearch.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.elasticsearch.role=…`的角色名来启用集成。
-用户名和密码可从`spring.elasticsearch.rest.username`和`spring.elasticsearch.rest.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。你可以通过设置 ` Spring.cloud.vault.elasticsearch.username-property` 和 ` Spring.cloud.vault.elasticsearch.password-property` 来配置属性名称。
+用户名和密码可从`spring.elasticsearch.rest.username`和`spring.elasticsearch.rest.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。可以通过设置`spring.cloud.vault.elasticsearch.username-property`和`spring.cloud.vault.elasticsearch.password-property`来配置属性名称。
```
spring.cloud.vault:
@@ -1362,14 +1353,14 @@ spring.cloud.vault:
另见:[Vault 文档:使用 Vault 设置 ElasticSearch](https://www.vaultproject.io/docs/secrets/databases/elasticdb)
-### [](#vault.config.backends.mongodb)[8.6. MongoDB](#vault.config.backends.mongodb) ###
+### [](#vault.config.backends.mongodb)[8.6.MongoDB](#vault.config.backends.mongodb)
| |`mongodb`后端在 Vault0.7.1 中已被弃用,建议使用`database`后端并将其挂载为`mongodb`。|
|---|---------------------------------------------------------------------------------------------------------------------------------------|
-Spring Cloud Vault 可以获得 MongoDB 的凭据。可以通过设置 ` Spring.cloud.vault.mongodb.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.mongodb.role=…`的角色名来启用集成。
+Spring Cloud Vault 可以获得 MongoDB 的凭据。可以通过设置`spring.cloud.vault.mongodb.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.mongodb.role=…`的角色名来启用集成。
-用户名和密码存储在`spring.data.mongodb.username`和`spring.data.mongodb.password`中,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。你可以通过设置 ` Spring.cloud.vault.mongodb.username-property` 和 ` Spring.cloud.vault.mongodb.password-property` 来配置属性名称。
+用户名和密码存储在`spring.data.mongodb.username`和`spring.data.mongodb.password`中,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。可以通过设置`spring.cloud.vault.mongodb.username-property`和`spring.cloud.vault.mongodb.password-property`来配置属性名。
```
spring.cloud.vault:
@@ -1393,14 +1384,14 @@ spring.cloud.vault:
另见:[Vault 文档:使用 Vault 建立 MongoDB](https://www.vaultproject.io/docs/secrets/mongodb/index.html)
-### [](#vault.config.backends.mysql)[8.7. MySQL](#vault.config.backends.mysql) ###
+### [](#vault.config.backends.mysql)[8.7. MySQL](#vault.config.backends.mysql)
| |`mysql`后端在 Vault0.7.1 中已被弃用,建议使用`database`后端并将其挂载为`mysql`。
`spring.cloud.vault.mysql`的配置将在未来的版本中删除。|
|---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-Spring Cloud Vault 可以获得用于 MySQL 的凭据。可以通过设置 ` Spring.cloud.vault.mysql.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.mysql.role=…`的角色名来启用集成。
+Spring Cloud Vault 可以获得 MySQL 的凭据。可以通过设置`spring.cloud.vault.mysql.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.mysql.role=…`的角色名来启用集成。
-用户名和密码可从`spring.datasource.username`和`spring.datasource.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。你可以通过设置“ Spring.cloud.vault.mysql.username-property”和“ Spring.cloud.vault.mysql.password-property”来配置属性名称。
+用户名和密码可从`spring.datasource.username`和`spring.datasource.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。可以通过设置`spring.cloud.vault.mysql.username-property`和`spring.cloud.vault.mysql.password-property`来配置属性名称。
```
spring.cloud.vault:
@@ -1424,14 +1415,14 @@ spring.cloud.vault:
另见:[Vault 文档:使用 Vault 设置 MySQL](https://www.vaultproject.io/docs/secrets/mysql/index.html)
-### [](#vault.config.backends.postgresql)[8.8. PostgreSQL](#vault.config.backends.postgresql) ###
+### [](#vault.config.backends.postgresql)[8.8.PostgreSQL](#vault.config.backends.postgresql)
| |`postgresql`后端在 Vault0.7.1 中已被弃用,建议使用`database`后端并将其挂载为`postgresql`。
`spring.cloud.vault.postgresql`的配置将在未来的版本中删除。|
|---|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-Spring Cloud Vault 可以获得用于 PostgreSQL 的凭据。可以通过设置 ` Spring.cloud.vault.postgreSQL.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.postgresql.role=…`的角色名来启用集成。
+Spring Cloud Vault 可以获得 PostgreSQL 的凭据。可以通过设置`spring.cloud.vault.postgresql.enabled=true`(默认`false`)并提供带有`spring.cloud.vault.postgresql.role=…`的角色名来启用集成。
-用户名和密码可从`spring.datasource.username`和`spring.datasource.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。你可以通过设置 ` Spring.cloud.vault.postgreSQL.username-property` 和 ` Spring.cloud.vault.postgreSQL.password-property` 来配置属性名称。
+用户名和密码可从`spring.datasource.username`和`spring.datasource.password`属性中获得,因此使用 Spring 引导将获取生成的凭据,而无需进一步配置。可以通过设置`spring.cloud.vault.postgresql.username-property`和`spring.cloud.vault.postgresql.password-property`来配置属性名称。
```
spring.cloud.vault:
@@ -1455,16 +1446,15 @@ spring.cloud.vault:
另见:[Vault 文档:使用 Vault 设置 PostgreSQL](https://www.vaultproject.io/docs/secrets/postgresql/index.html)
-[](#vault.config.backends.configurer)[9.自定义要作为 PropertySource 公开的秘密后端](#vault.config.backends.configurer)
-----------
+## [](#vault.config.backends.configurer)[9.自定义要作为 PropertySource 公开的秘密后端](#vault.config.backends.configurer)
-Spring Cloud Vault 使用基于属性的配置来为键值和已发现的秘密后端创建`PropertySource`s。
+Spring Cloud Vault 使用基于属性的配置来为键值和已发现的秘密后台创建`PropertySource`s。
已发现的后端提供`VaultSecretBackendDescriptor`bean 来描述使用秘密后端的配置状态为`PropertySource`。需要一个`SecretBackendMetadataFactory`来创建一个`SecretBackendMetadata`对象,该对象包含路径、名称和属性转换配置。
`SecretBackendMetadata`用于支持特定的`PropertySource`。
-你可以注册`VaultConfigurer`以进行定制。如果提供`VaultConfigurer`,则禁用默认的键值和已发现的后端注册。但是,你可以使用“secretbackendconfigurer.registerdefaultKeyValuesecretBackends()”和启用默认注册。
+你可以注册`VaultConfigurer`以进行定制。如果提供`VaultConfigurer`,则禁用默认的键值和已发现的后端注册。但是,你可以启用`SecretBackendConfigurer.registerDefaultKeyValueSecretBackends()`和`SecretBackendConfigurer.registerDefaultDiscoveredSecretBackends()`的默认注册。
```
public class CustomizationBean implements VaultConfigurer {
@@ -1485,10 +1475,9 @@ SpringApplication application = new SpringApplication(MyApplication.class);
application.addBootstrapper(VaultBootstrapper.fromConfigurer(new CustomizationBean()));
```
-[](#vault.config.backends.custom)[10.自定义秘密后端实现](#vault.config.backends.custom)
-----------
+## [](#vault.config.backends.custom)[10.自定义秘密后端实现](#vault.config.backends.custom)
-Spring Cloud Vault 附带对最常见的后端集成的秘密后端支持。你可以通过提供一个实现来与任何类型的后端集成,该实现描述了如何从要使用的后端获取数据,以及如何通过提供`PropertyTransformer`来处理该后端提供的数据。
+Spring Cloud Vault 为最常见的后端集成提供了秘密的后端支持。你可以通过提供一个实现来与任何类型的后端集成,该实现描述了如何从要使用的后端获取数据,以及如何通过提供`PropertyTransformer`来处理该后端提供的数据。
为后端添加自定义实现需要实现两个接口:
@@ -1496,18 +1485,17 @@ Spring Cloud Vault 附带对最常见的后端集成的秘密后端支持。你
* `org.springframework.cloud.vault.config.SecretBackendMetadataFactory`
-`VaultSecretBackendDescriptor`通常是保存配置数据的对象,例如`VaultDatabaseProperties`。 Spring Cloud Vault 要求你的类型被注释为`@ConfigurationProperties`,以从配置中实现类。
+`VaultSecretBackendDescriptor`通常是保存配置数据的对象,例如`VaultDatabaseProperties`。 Spring Cloud Vault 要求用`@ConfigurationProperties`对类型进行注释,以便从配置中实现类。
`SecretBackendMetadataFactory`接受`VaultSecretBackendDescriptor`以创建实际的`SecretBackendMetadata`对象,该对象保存 Vault 服务器内的上下文路径、解析参数化上下文路径所需的任何路径变量和`PropertyTransformer`。
`VaultSecretBackendDescriptor`和`SecretBackendMetadataFactory`类型都必须在`spring.factories`中注册,这是 Spring 提供的一种扩展机制,类似于 Java 的 ServiceLoader。
-[](#service-registry-configuration)[11.服务注册中心配置](#service-registry-configuration)
-----------
+## [](#service-registry-configuration)[11.服务注册中心配置](#service-registry-configuration)
-你可以使用`DiscoveryClient`(例如 from Spring Cloud Consul)通过设置 Spring.cloud.vault.discovery.enabled=true(默认`false`)来定位 Vault 服务器。这样做的最终结果是,你的应用程序需要一个具有适当的发现配置的 application.yml(或环境变量)。好处是,只要发现服务是一个固定点,保险库就可以更改其坐标。默认的服务 ID 是`vault`,但是你可以在客户机上使用 ` Spring.cloud.vault.Discovery.ServiceID’更改它。
+你可以使用`DiscoveryClient`(例如来自 Spring Cloud Consul)通过设置 Spring.cloud.vault.discovery.enabled=true(默认`false`)来定位 Vault 服务器。这样做的最终结果是,你的应用程序需要一个具有适当的发现配置的 application.yml(或环境变量)。好处是,只要发现服务是一个固定点,保险库就可以更改其坐标。默认的服务 ID 是`vault`,但是你可以在客户机上使用`spring.cloud.vault.discovery.serviceId`更改它。
-发现客户机实现都支持某种元数据映射(例如,对于 Eureka,我们有 eureka.instance.metadatamap)。服务的一些附加属性可能需要在其服务注册元数据中进行配置,以便客户端能够正确地连接。不提供传输层安全性详细信息的服务注册中心需要提供一个`scheme`元数据条目,将其设置为`https`或`http`。如果没有配置任何方案,并且该服务不作为安全服务公开,那么配置默认为`spring.cloud.vault.scheme`,如果未设置该配置,则为`https`。
+发现客户机实现都支持某种元数据映射(例如,对于 Eureka,我们有 eureka.instance.metadatamap)。服务的一些附加属性可能需要在其服务注册元数据中进行配置,以便客户端能够正确地连接。不提供传输层安全性详细信息的服务注册中心需要提供一个`scheme`元数据条目,将其设置为`https`或`http`。如果没有配置任何方案,并且服务不作为安全服务公开,那么在未设置配置时,配置默认为`spring.cloud.vault.scheme`,即`https`。
```
spring.cloud.vault.discovery:
@@ -1515,20 +1503,18 @@ spring.cloud.vault.discovery:
service-id: my-vault-service
```
-[](#vault.config.fail-fast)[12.Vault 客户端快速失败](#vault.config.fail-fast)
-----------
+## [](#vault.config.fail-fast)[12.Vault 客户端快速失败](#vault.config.fail-fast)
-在某些情况下,如果服务无法连接到 Vault 服务器,则可能希望服务启动失败。如果这是期望的行为,那么设置 bootstrap 配置属性 ` Spring.cloud.vault.fail-fast=true`,客户端将异常停止。
+在某些情况下,如果服务无法连接到 Vault 服务器,则可能希望服务启动失败。如果这是所需的行为,那么设置 BootStrap 配置属性`spring.cloud.vault.fail-fast=true`,客户端将异常停止。
```
spring.cloud.vault:
fail-fast: true
```
-[](#vault.config.namespaces)[13.Vault Enterprise 命名空间支持](#vault.config.namespaces)
-----------
+## [](#vault.config.namespaces)[13.Vault Enterprise 命名空间支持](#vault.config.namespaces)
-Vault Enterprise 允许使用名称空间来隔离单个 Vault 服务器上的多个 Vault。在使用 vault`resttemplate’或`WebClient`时,通过设置 ` Spring.cloud.vault.namespace=…` 在每个传出的 HTTP 请求上启用名称空间头 `x-vault-namespace’来配置名称空间。
+Vault Enterprise 允许使用名称空间来隔离单个 Vault 服务器上的多个 Vault。在使用 vault`RestTemplate`或`WebClient`时,通过设置`spring.cloud.vault.namespace=…`来配置名称空间,可以在每个传出的 HTTP 请求上启用名称空间标头`X-Vault-Namespace`。
请注意,Vault Community Edition 不支持此功能,并且对 Vault 操作没有影响。
@@ -1539,8 +1525,7 @@ spring.cloud.vault:
另见:[Vault Enterprise:名称空间](https://www.vaultproject.io/docs/enterprise/namespaces/index.html)
-[](#vault.config.ssl)[14.Vault 客户端 SSL 配置](#vault.config.ssl)
-----------
+## [](#vault.config.ssl)[14.Vault 客户端 SSL 配置](#vault.config.ssl)
可以通过设置各种属性来声明性地配置 SSL。你可以设置`javax.net.ssl.trustStore`来配置 JVM 范围内的 SSL 设置,也可以设置`spring.cloud.vault.ssl.trust-store`来仅为 Spring Cloud Vault 配置设置 SSL 设置。
@@ -1566,10 +1551,9 @@ spring.cloud.vault:
请注意,配置`spring.cloud.vault.ssl.*`只能在 Apache HTTP 组件或 OKHTTP 客户机位于类路径上时才能应用。
-[](#vault-lease-renewal)[15.租赁生命周期管理(更新和撤销)](#vault-lease-renewal)
-----------
+## [](#vault-lease-renewal)[15.租赁生命周期管理(更新和撤销)](#vault-lease-renewal)
-对于每个秘密,Vault 都会创建一个租约:元数据,其中包含时间持续时间、可更新性等信息。
+对于每个秘密,Vault 都会创建一个租约:元数据,其中包含诸如时间期限、可更新性等信息。
Vault 承诺,这些数据将在给定的持续时间或生存时间内有效。一旦租约到期,Vault 可以撤销该数据,并且该秘密的使用者不能再确定它是否有效。
@@ -1595,18 +1579,17 @@ spring.cloud.vault:
* `min-renewal`设置续租前至少需要的期限。这种设置可以防止更新太频繁。
-* `expiry-threshold`设置到期阈值。租约在到期前会在配置的期限内续签。
+* `expiry-threshold`设置到期阈值。租约在到期前会在配置好的期限内续签。
* `lease-endpoints`设置更新和撤销的端点。旧版的 Vault 版本在 0.8 之前,Sysleases 版本在以后。
另见:[保险库文档:租赁、续订和撤销](https://www.vaultproject.io/docs/concepts/lease.html)
-[](#vault-session-lifecycle)[16.会话令牌生命周期管理(更新、重新登录和撤销)](#vault-session-lifecycle)
-----------
+## [](#vault-session-lifecycle)[16.会话令牌生命周期管理(更新、重新登录和撤销)](#vault-session-lifecycle)
-Vault 会话令牌(也称为`LoginToken`)与租赁非常相似,因为它具有 TTL,最大 TTL,并且可能会过期。一旦登录令牌过期,就不能再使用它与 Vault 进行交互。因此, Spring Vault 提供了一个`SessionManager`API,用于命令式和反应式使用。
+Vault 会话令牌(也称为`LoginToken`)与租赁非常相似,因为它具有 TTL,最大 TTL,并且可能会过期。一旦一个登录令牌过期,它就不能再用于与 Vault 交互。因此, Spring Vault 使用`SessionManager`API 进行命令和反应使用。
-Spring 默认情况下,Cloud Vault 维护会话令牌生命周期。会话令牌是懒洋洋地获得的,因此实际的登录被推迟到第一次使用 Vault 的会话绑定时。一旦 Spring Cloud Vault 获得会话令牌,它将保留它直到到期。下一次使用会话绑定活动时, Spring Cloud Vault 重新登录到 Vault 并获得一个新的会话令牌。在应用程序关闭时, Spring Cloud Vault 撤销令牌,如果它仍然处于活动状态以终止会话。
+Spring 默认情况下,Cloud Vault 维护会话令牌生命周期。会话令牌是懒洋洋地获得的,因此实际的登录被推迟到 Vault 的第一次会话绑定使用时。一旦 Spring Cloud Vault 获得会话令牌,它将保留该令牌直到到期。下一次使用会话绑定活动时, Spring Cloud Vault 重新登录到 Vault 并获得一个新的会话令牌。在应用程序关闭时, Spring Cloud Vault 撤销令牌,如果它仍然处于活动状态以终止会话。
默认情况下,会话生命周期是启用的,可以通过将`spring.cloud.vault.session.lifecycle.enabled`设置为`false`来禁用。不建议禁用,因为会话令牌可能会过期,并且 Spring Cloud Vault 无法更长时间访问 Vault。
@@ -1626,8 +1609,7 @@ spring.cloud.vault:
另见:[保险库文档:令牌更新](https://www.vaultproject.io/api-docs/auth/token#renew-a-token-self)
-[](#common-application-properties)[附录 A:通用应用程序属性](#common-application-properties)
-----------
+## [](#common-application-properties)[附录 A:通用应用程序属性](#common-application-properties)
可以在`application.properties`文件内、`application.yml`文件内或作为命令行开关指定各种属性。本附录提供了一个常见的 Spring Cloud Vault 属性的列表,以及对使用它们的基础类的引用。
@@ -1662,7 +1644,7 @@ spring.cloud.vault:
| spring.cloud.vault.aws.secret-key-property | `cloud.aws.credentials.secretKey` |获取的密钥的目标属性。|
| spring.cloud.vault.aws.session-token-key-property | `cloud.aws.credentials.sessionToken` |获取的密钥的目标属性。|
| spring.cloud.vault.aws.ttl | `0` |STS 代币的 TTL。默认情况下,无论保险库角色可能对 MAX 有什么影响。也仅限于 AWS 支持的 STS 的最大值。@since3.0.2|
-| spring.cloud.vault.azure-msi.azure-path | `azure` |安装路径的 Azure MSI 身份验证后端。|
+| spring.cloud.vault.azure-msi.azure-path | `azure` |安装 Azure MSI 认证后端的路径。|
| spring.cloud.vault.azure-msi.identity-token-service | |身份令牌服务 URI。@since3.0|
| spring.cloud.vault.azure-msi.metadata-service | |实例元数据服务 URI。@since3.0|
| spring.cloud.vault.azure-msi.role | |角色的名称。|
@@ -1675,7 +1657,7 @@ spring.cloud.vault:
| spring.cloud.vault.config.lifecycle.enabled | `true` |启用生命周期管理。|
| spring.cloud.vault.config.lifecycle.expiry-threshold | |到期日门槛。{@link lease}在给定的{@link duration}到期前更新。@ 自 2.2 起|
| spring.cloud.vault.config.lifecycle.lease-endpoints | |将{@Link LeaseEndpoints}设置为将续订/撤销调用委托给。{@link leaseendpoints}封装了影响更新/撤销端点位置的 Vault 版本之间的差异。对于 Vault 的 0.8 或更高版本,可以使用{@Link LeaseEndpoints#sysleases},对于较旧的版本,可以使用{@Link LeaseEndpoints#Legacy}(默认)。@ 自 2.2 起|
-| spring.cloud.vault.config.lifecycle.min-renewal | |在续约前至少需要的时间。@ 自 2.2 起|
+| spring.cloud.vault.config.lifecycle.min-renewal | |在续租前至少需要的时间。@ 自 2.2 起|
| spring.cloud.vault.config.order | `0` |用于设置{@link org.springframework.core.ENV.PropertySource}的优先级。这对于使用 Vault 作为对其他属性源的覆盖是有用的。@see org.springframework.core.priorityordered|
| spring.cloud.vault.connection-timeout | `5000` |连接超时。|
| spring.cloud.vault.consul.backend | `consul` |领事后台路径。|
@@ -1709,7 +1691,7 @@ spring.cloud.vault:
| spring.cloud.vault.gcp-gce.role | |尝试登录所针对的角色的名称。|
| spring.cloud.vault.gcp-gce.service-account | |可选服务帐户 ID。如果未配置,则使用默认 ID。|
| spring.cloud.vault.gcp-iam.credentials.encoded-key | |base64 以 JSON 格式对 OAuth2 帐户私钥的内容进行了编码。|
-| spring.cloud.vault.gcp-iam.credentials.location | |OAuth2 凭证私钥的位置。\由于这是一种资源,私钥可以位于多种位置,例如本地文件系统、 Classpath、URL 等。|
+| spring.cloud.vault.gcp-iam.credentials.location | |OAuth2 凭证私钥的位置。\
由于这是一个资源,私钥可以位于多种位置,例如本地文件系统、 Classpath、URL 等。|
| spring.cloud.vault.gcp-iam.gcp-path | `gcp` |Kubernetes 身份验证后端的挂载路径。|
| spring.cloud.vault.gcp-iam.jwt-validity | `15m` |JWT 令牌的有效性。|
| spring.cloud.vault.gcp-iam.project-id | |重写 GCP 项目 ID。|
@@ -1770,3 +1752,5 @@ spring.cloud.vault:
| spring.cloud.vault.ssl.trust-store-type | |信任存储的类型。@since3.0|
| spring.cloud.vault.token | |静态保险库令牌。如果{@link#authentication}是{@code token},则需要。|
| spring.cloud.vault.uri | |Vault Uri。可以用方案、主机和端口进行设置.|
+
+如果{{{i[’GoogleAnalyticsObject’]=r;i[r]=i[r]|function(){q=i[r].push(参数)},i[r].l=1\*new date();a=s.createElement(o),m=s.getelementsbyName(0);a.parentsName(1);a.A.SRC=g;m.M.analytnode(gua,m.com.com);(google=document=’,’,’’’’’’’’),’documents’,’’.’’’’’’’’’’’,’’’’’’
\ No newline at end of file
diff --git a/docs/spring-cloud/spring-cloud-zookeeper.md b/docs/spring-cloud/spring-cloud-zookeeper.md
index 50cb6c9488b591e53104742f102315462ab818a2..b1f248abd44b2d2f17eee02bf499a934c1c76bf2 100644
--- a/docs/spring-cloud/spring-cloud-zookeeper.md
+++ b/docs/spring-cloud/spring-cloud-zookeeper.md
@@ -1,16 +1,14 @@
-[Spring Cloud Zookeeper](#_spring_cloud_zookeeper)
-==========
+# [Spring Cloud Zookeeper](#_spring_cloud_zookeeper)
该项目通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯用法,为 Spring 引导应用程序提供 ZooKeeper 集成。通过一些注释,你可以快速启用和配置应用程序中的常见模式,并使用基于 ZooKeeper 的组件构建大型分布式系统。所提供的模式包括服务发现和配置。该项目还通过集成 Spring Cloud LoadBalancer 提供客户端负载平衡。
-[](#quick-start)[1. Quick Start](#quick-start)
-----------
+## [](#quick-start)[1.快速启动](#quick-start)
这个快速的开始将使用 Spring Cloud ZooKeeper 进行服务发现和分布式配置。
首先,在你的机器上运行 ZooKeeper。然后,你可以访问它,并将其作为服务注册表和配置源使用 Spring Cloud ZooKeeper。
-### [](#discovery-client-usage)[1.1.发现客户端使用情况](#discovery-client-usage) ###
+### [](#discovery-client-usage)[1.1.发现客户端使用情况](#discovery-client-usage)
要在应用程序中使用这些特性,你可以将其构建为依赖于`spring-cloud-zookeeper-core`和`spring-cloud-zookeeper-discovery`的 Spring 引导应用程序。添加依赖项最方便的方法是使用 Spring 引导启动器:`org.springframework.cloud:spring-cloud-starter-zookeeper-discovery`。我们建议使用依赖管理和`spring-boot-starter-parent`。下面的示例展示了一个典型的 Maven 配置:
@@ -130,7 +128,7 @@ public String serviceUrl() {
}
```
-### [](#distributed-configuration-usage)[1.2.分布式配置使用](#distributed-configuration-usage) ###
+### [](#distributed-configuration-usage)[1.2.分布式配置使用](#distributed-configuration-usage)
要在应用程序中使用这些特性,你可以将其构建为依赖于`spring-cloud-zookeeper-core`和`spring-cloud-zookeeper-config`的 Spring 引导应用程序。添加依赖项最方便的方法是使用 Spring 引导启动器:`org.springframework.cloud:spring-cloud-starter-zookeeper-config`。我们建议使用依赖管理和`spring-boot-starter-parent`。下面的示例显示了典型的 Maven 配置:
@@ -231,8 +229,7 @@ public class Application {
| |如果使用 Spring Cloud ZooKeeper Config,则需要设置`spring.config.import`属性才能绑定到 ZooKeeper。
你可以在[Spring Boot Config Data Import section](#config-data-import)中阅读有关它的更多信息。|
|---|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-[](#spring-cloud-zookeeper-install)[2.安装 ZooKeeper](#spring-cloud-zookeeper-install)
-----------
+## [](#spring-cloud-zookeeper-install)[2.安装 ZooKeeper](#spring-cloud-zookeeper-install)
有关如何安装 ZooKeeper 的说明,请参见[安装文档](https://zookeeper.apache.org/doc/current/zookeeperStarted.html)。
@@ -277,22 +274,21 @@ compile('org.apache.zookeeper:zookeeper:3.4.12') {
}
```
-[](#spring-cloud-zookeeper-discovery)[3.使用 ZooKeeper 进行服务发现](#spring-cloud-zookeeper-discovery)
-----------
+## [](#spring-cloud-zookeeper-discovery)[3.使用 ZooKeeper 进行服务发现](#spring-cloud-zookeeper-discovery)
服务发现是基于微服务的体系结构的关键原则之一。尝试手动配置每个客户机或某种形式的约定可能很难做到,并且可能很脆弱。[Curator](https://curator.apache.org)(ZooKeeper 的 Java 库)通过[服务发现扩展](https://curator.apache.org/curator-x-discovery/)提供服务发现。 Spring Cloud ZooKeeper 将此扩展用于服务注册和发现。
-### [](#activating)[3.1. Activating](#activating) ###
+### [](#activating)[3.1.激活](#activating)
-包括对 `org.springframework.cloud: Spring-cloud-starter-zookeeper-discovery’的依赖,使自动配置能够设置 Spring cloud zookeeper discovery。
+包括对`org.springframework.cloud:spring-cloud-starter-zookeeper-discovery`的依赖可以实现自动配置,从而设置 Spring Cloud ZooKeeper 发现。
-| |对于 Web 功能,仍然需要包含“org.springframework.boot: Spring-boot-starter-web”。|
+| |对于 Web 功能,你仍然需要包含`org.springframework.boot:spring-boot-starter-web`。|
|---|---------------------------------------------------------------------------------------------------|
| |在使用 ZooKeeper 的 3.4 版本时,你需要更改
包含依赖项的方式,如[here](#spring-cloud-zookeeper-install)所述。|
|---|----------------------------------------------------------------------------------------------------------------------------------------------------------|
-### [](#registering-with-zookeeper)[3.2.在动物园管理员处注册](#registering-with-zookeeper) ###
+### [](#registering-with-zookeeper)[3.2.在动物园管理员处注册](#registering-with-zookeeper)
当客户机向 ZooKeeper 注册时,它提供有关自身的元数据(如主机和端口、ID 和名称)。
@@ -318,7 +314,7 @@ public class Application {
| |前面的示例是一个普通的引导应用程序 Spring。|
|---|----------------------------------------------------------|
-如果 ZooKeeper 位于`localhost:2181`以外的地方,则配置必须提供服务器的位置,如以下示例所示:
+如果 ZooKeeper 位于`localhost:2181`以外的地方,则配置必须提供服务器的位置,如下例所示:
应用程序.yml
@@ -329,18 +325,18 @@ spring:
connect-string: localhost:2181
```
-| |如果使用[Spring Cloud Zookeeper Config](#spring-cloud-zookeeper-config),则前面示例中显示的
值需要在`bootstrap.yml`中,而不是在 `应用程序.yml` 中。|
+| |如果使用[Spring Cloud Zookeeper Config](#spring-cloud-zookeeper-config),则前面示例中显示的
值需要在`bootstrap.yml`而不是`应用程序.yml`中。|
|---|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-默认的服务名称、实例 ID 和端口(取自`Environment`)分别是 `${ Spring.application.name}`、 Spring 上下文 ID 和`${server.port}`。
+默认的服务名、实例 ID 和端口(取自`Environment`)分别是`${spring.application.name}`、 Spring 上下文 ID 和`${server.port}`。
在 Classpath 上具有`spring-cloud-starter-zookeeper-discovery`使得该应用程序既可以成为 ZooKeeper“服务”(即它自己注册),也可以成为“客户端”(即它可以查询 ZooKeeper 以定位其他服务)。
-如果你想禁用 ZooKeeper Discovery 客户端,可以将 ` Spring.cloud.zooKeeper.Discovery.enabled` 设置为`false`。
+如果你想禁用 ZooKeeper 发现客户端,可以将`spring.cloud.zookeeper.discovery.enabled`设置为`false`。
-### [](#using-the-discoveryclient)[3.3.使用 DiscoveryClient](#using-the-discoveryclient) ###
+### [](#using-the-discoveryclient)[3.3.使用 DiscoveryClient](#using-the-discoveryclient)
-Spring 云具有对[Feign](https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-feign)(一个 REST 客户机构建器)、[Spring`RestTemplate`](https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/ascii)和[Spring WebFlux](https://cloud.spring.io/spring-cloud-commons/reference/html/#loadbalanced-webclient)的支持,使用逻辑服务名称而不是物理 URL。
+Spring Cloud 支持[Feign](https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-feign)(一个 REST 客户端构建器)、[[ Spring `RestTemplate`](https://github.com/ Spring-cloud/ Spring-cloud-netflix/blob/master/DOCS/SRC/main/ascii)和[Spring WebFlux](https://cloud.spring.io/spring-cloud-commons/reference/html/#loadbalanced-webclient),使用逻辑服务名称而不是物理 URL。
你也可以使用`org.springframework.cloud.client.discovery.DiscoveryClient`,它为不特定于 Netflix 的发现客户端提供了一个简单的 API,如下例所示:
@@ -357,24 +353,22 @@ public String serviceUrl() {
}
```
-[](#spring-cloud-zookeeper-other-componentes)[4. Using Spring Cloud Zookeeper with Spring Cloud Components](#spring-cloud-zookeeper-other-componentes)
-----------
+## [](#spring-cloud-zookeeper-other-componentes)[4. Using Spring Cloud Zookeeper with Spring Cloud Components](#spring-cloud-zookeeper-other-componentes)
-佯装、 Spring 云网关和 Spring 云负载均衡器都与 Spring 云 ZooKeeper 一起工作。
+假装、 Spring Cloud网关和 Spring Cloud负载均衡器都与 Spring Cloud ZooKeeper 一起工作。
-### [](#spring-cloud-loadbalancer-with-zookeeper)[4.1. Spring Cloud LoadBalancer with Zookeeper](#spring-cloud-loadbalancer-with-zookeeper) ###
+### [](#spring-cloud-loadbalancer-with-zookeeper)[4.1. Spring Cloud LoadBalancer with Zookeeper](#spring-cloud-loadbalancer-with-zookeeper)
-Spring Cloud ZooKeeper 提供了 Spring Cloud LoadBalancer`ServiceInstanceListSupplier`的实现方式。当你使用`spring-cloud-starter-zookeeper-discovery`时, Spring 云负载平衡器被自动配置为默认使用“ZooKeeperServiceInstanceListSupplier”。
+Spring Cloud ZooKeeper 提供了 Spring Cloud LoadBalancer`ServiceInstanceListSupplier`的实现方式。当你使用`spring-cloud-starter-zookeeper-discovery`时, Spring Cloud负载平衡器被自动配置为默认使用`ZookeeperServiceInstanceListSupplier`。
-| |如果你以前在 ZooKeeper 中使用了 StickyRule,那么当前堆栈中的 stickyRule
中的替换项是 SC LoadBalancer 中的`SameInstancePreferenceServiceInstanceListSupplier`。你可以在[Spring Cloud Commons documentation](https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#spring-cloud-loadbalancer)中了解如何设置它。|
+| |如果你以前在 ZooKeeper 中使用 StickyRule,则当前堆栈中的 stickyRule
中的替换项是 SC LoadBalancer 中的`SameInstancePreferenceServiceInstanceListSupplier`。你可以在[Spring Cloud Commons documentation](https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#spring-cloud-loadbalancer)中阅读有关如何设置它的内容。|
|---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-[](#spring-cloud-zookeeper-service-registry)[5. Spring Cloud Zookeeper and Service Registry](#spring-cloud-zookeeper-service-registry)
-----------
+## [](#spring-cloud-zookeeper-service-registry)[5. Spring Cloud Zookeeper and Service Registry](#spring-cloud-zookeeper-service-registry)
Spring Cloud ZooKeeper 实现了`ServiceRegistry`接口,允许开发人员以编程的方式注册任意服务。
-`ServiceInstanceRegistration`类提供了一个`builder()`方法来创建一个`ServiceRegistry`可以使用的 `registration’对象,如以下示例所示:
+`ServiceInstanceRegistration`类提供了一个`builder()`方法来创建`Registration`对象,该对象可以由`ServiceRegistry`使用,如以下示例所示:
```
@Autowired
@@ -391,7 +385,7 @@ public void registerThings() {
}
```
-### [](#instance-status)[5.1.实例状态](#instance-status) ###
+### [](#instance-status)[5.1.实例状态](#instance-status)
Netflix Eureka 支持在服务器上注册`OUT_OF_SERVICE`实例。这些实例不作为活动服务实例返回。这对于诸如蓝色/绿色部署之类的行为很有用。(注意,Curator 服务发现配方不支持此行为。)利用灵活的有效负载, Spring Cloud ZooKeeper 可以通过更新一些特定的元数据,然后在 Spring Cloud LoadBalancer中对该元数据进行过滤来实现。`ZookeeperServiceInstanceListSupplier`过滤掉所有不等于`UP`的非空实例状态。如果实例状态字段为空,则认为它是`UP`,用于向后兼容。要更改实例的状态,请将`POST`与`OUT_OF_SERVICE`连接到`ServiceRegistry`实例状态执行器端点,如以下示例所示:
@@ -402,8 +396,7 @@ $ http POST http://localhost:8081/service-registry status=OUT_OF_SERVICE
| |前面的示例使用[httpie.org](https://httpie.org)中的`http`命令。|
|---|------------------------------------------------------------------------------------|
-[](#spring-cloud-zookeeper-dependencies)[6.动物园管理员依赖关系](#spring-cloud-zookeeper-dependencies)
-----------
+## [](#spring-cloud-zookeeper-dependencies)[6.动物园管理员依赖关系](#spring-cloud-zookeeper-dependencies)
以下主题涵盖了如何使用 Spring Cloud ZooKeeper 依赖项:
@@ -415,17 +408,17 @@ $ http POST http://localhost:8081/service-registry status=OUT_OF_SERVICE
* [Configuring Spring Cloud Zookeeper Dependencies](#spring-cloud-zookeeper-dependencies-configuring)
-### [](#spring-cloud-zookeeper-dependencies-using)[6.1.使用 ZooKeeper 依赖项](#spring-cloud-zookeeper-dependencies-using) ###
+### [](#spring-cloud-zookeeper-dependencies-using)[6.1.使用 ZooKeeper 依赖项](#spring-cloud-zookeeper-dependencies-using)
-Spring Cloud ZooKeeper 为你提供了一种可能性,可以将你的应用程序的依赖关系作为属性提供。作为依赖关系,你可以理解在 ZooKeeper 中注册的其他应用程序,你希望通过[Feign](https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-feign)(REST 客户机生成器)、[Spring`RestTemplate`](https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/ascii)和[Spring WebFlux](https://cloud.spring.io/spring-cloud-commons/reference/html/#loadbalanced-webclient)调用这些应用程序。
+Spring Cloud ZooKeeper 为你提供了一种可能性,可以将你的应用程序的依赖关系作为属性提供。作为依赖关系,你可以了解注册在 ZooKeeper 中并希望通过[Feign](https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-feign)(一个 REST 客户机生成器)调用的其他应用程序,[ Spring `RestTemplate`](https://github.com/ Spring-cloud/ Spring-cloud/ Spring-cloud-netflix/blob/master/DOCS/SRC/main/ascii)和[Spring WebFlux](https://cloud.spring.io/spring-cloud-commons/reference/html/#loadbalanced-webclient)。
你还可以使用 ZooKeeper Dependency Watchers 功能来控制和监视你的依赖关系的状态。
-### [](#spring-cloud-zookeeper-dependencies-activating)[6.2.激活 ZooKeeper 依赖项](#spring-cloud-zookeeper-dependencies-activating) ###
+### [](#spring-cloud-zookeeper-dependencies-activating)[6.2.激活 ZooKeeper 依赖项](#spring-cloud-zookeeper-dependencies-activating)
-包括对 `org.springframework.cloud: Spring-cloud-starter-zookeeper-discovery’的依赖,使自动配置能够建立 Spring cloud zookeeper 依赖关系。即使你在属性中提供了依赖关系,也可以关闭依赖关系。为此,将 ` Spring.cloud.zookeeper.dependency.enabled’属性设置为 false(默认设置为`true`)。
+包含对`org.springframework.cloud:spring-cloud-starter-zookeeper-discovery`的依赖项,可以实现自动配置,从而设置 Spring Cloud ZooKeeper 依赖项。即使你在属性中提供了依赖关系,也可以关闭依赖关系。为此,将`spring.cloud.zookeeper.dependency.enabled`属性设置为 false(默认设置为`true`)。
-### [](#spring-cloud-zookeeper-dependencies-setting-up)[6.3.设置 ZooKeeper 依赖项](#spring-cloud-zookeeper-dependencies-setting-up) ###
+### [](#spring-cloud-zookeeper-dependencies-setting-up)[6.3.设置 ZooKeeper 依赖项](#spring-cloud-zookeeper-dependencies-setting-up)
考虑下面的依赖关系表示示例:
@@ -457,9 +450,9 @@ spring.cloud.zookeeper:
接下来的几节将逐一介绍依赖关系的每个部分。根属性名为`spring.cloud.zookeeper.dependencies`。
-#### [](#spring-cloud-zookeeper-dependencies-setting-up-aliases)[6.3.1. Aliases](#spring-cloud-zookeeper-dependencies-setting-up-aliases) ####
+#### [](#spring-cloud-zookeeper-dependencies-setting-up-aliases)[6.3.1.别名](#spring-cloud-zookeeper-dependencies-setting-up-aliases)
-在根属性下面,你必须将每个依赖项表示为别名。这是由于 Spring Cloud LoadBalancer 的限制,它要求将应用程序 ID 放置在 URL 中。因此,你不能通过任何复杂的路径,例如`/myApp/myRoute/name`)。别名是你使用的名称,而不是`DiscoveryClient`,`Feign`或 `resttemplate’的`serviceId`。
+在根属性下面,你必须将每个依赖项表示为别名。这是由于 Spring Cloud LoadBalancer 的限制,它要求将应用程序 ID 放置在 URL 中。因此,你不能通过任何复杂的路径,例如`/myApp/myRoute/name`)。别名是你使用的名称,而不是用于`DiscoveryClient`,`Feign`或`RestTemplate`的`serviceId`。
在前面的示例中,别名是`newsletter`和`mailing`。下面的示例显示了使用`newsletter`别名的假装用法:
@@ -471,11 +464,11 @@ public interface NewsletterService {
}
```
-#### [](#path)[6.3.2. Path](#path) ####
+#### [](#path)[6.3.2.路径](#path)
-该路径由`path`YAML 属性表示,并且是在 ZooKeeper 下注册依赖项的路径。如[上一节](#spring-cloud-zookeeper-dependencies-setting-up-aliases)中所述, Spring Cloud LoadBalancer 在 URL 上运行。因此,此路径不符合其需求。这就是为什么 Spring Cloud ZooKeeper 将别名映射到正确的路径。
+该路径由`path`YAML 属性表示,并且是在 ZooKeeper 下注册依赖项的路径。正如[上一节](#spring-cloud-zookeeper-dependencies-setting-up-aliases)中所描述的, Spring Cloud LoadBalancer 在 URL 上运行。因此,此路径不符合其需求。这就是为什么 Spring Cloud ZooKeeper 将别名映射到正确的路径。
-#### [](#load-balancer-type)[6.3.3.负载平衡器类型](#load-balancer-type) ####
+#### [](#load-balancer-type)[6.3.3.负载平衡器类型](#load-balancer-type)
负载均衡器类型由`loadBalancerType`YAML 属性表示。
@@ -487,11 +480,11 @@ public interface NewsletterService {
* Round\_Robin:一遍又一遍地迭代实例。
-#### [](#content-type-template-and-version)[6.3.4. `Content-Type` Template and Version](#content-type-template-and-version) ####
+#### [](#content-type-template-and-version)[6.3.4。`Content-Type`模板和版本](#content-type-template-and-version)
-`Content-Type`模板和版本由`contentTypeTemplate`和 `version’yaml 属性表示。
+`Content-Type`模板和版本由`contentTypeTemplate`和`version`YAML 属性表示。
-如果在`Content-Type`头中对 API 进行版本,则不希望将此头添加到每个请求中。此外,如果你想调用一个新版本的 API,那么你不希望围绕你的代码 ROAM 来提高 API 版本。这就是为什么你可以提供带有特殊`$version`占位符的 `ContentTypeTemplate’。这个占位符将由“version”YAML 属性的值来填充。考虑以下`contentTypeTemplate`的示例:
+如果在`Content-Type`头中对 API 进行版本,则不希望将此头添加到每个请求中。此外,如果你想调用一个新版本的 API,那么你不希望围绕你的代码 ROAM 来提高 API 版本。这就是为什么可以为`contentTypeTemplate`提供一个特殊的`$version`占位符。这个占位符将由`version`YAML 属性的值来填充。考虑以下`contentTypeTemplate`的示例:
```
application/vnd.newsletter.$version+json
@@ -503,17 +496,17 @@ application/vnd.newsletter.$version+json
v1
```
-结合`contentTypeTemplate`和版本,将为每个请求创建一个 `Content-Type’头,如下所示:
+结合`contentTypeTemplate`和版本,将为每个请求创建`Content-Type`头,如下所示:
```
application/vnd.newsletter.v1+json
```
-#### [](#default-headers)[6.3.5.默认标头](#default-headers) ####
+#### [](#default-headers)[6.3.5.默认标头](#default-headers)
-在 YAML 中,默认的头由`headers`映射表示。
+默认的头文件由 YAML 中的`headers`映射表示。
-有时,对依赖项的每次调用都需要设置一些默认的标头。要在代码中不这样做,你可以在 YAML 文件中设置它们,如下面的示例“headers”部分所示:
+有时,对依赖项的每次调用都需要设置一些默认的标头。要在代码中不这样做,你可以在 YAML 文件中设置它们,如以下示例`headers`部分所示:
```
headers:
@@ -524,9 +517,9 @@ headers:
- no-cache
```
-该`headers`部分会导致在 HTTP 请求中添加带有适当的值列表的`Accept`和`Cache-Control`标题。
+该`headers`部分导致在 HTTP 请求中添加带有适当的值列表的`Accept`和`Cache-Control`标题。
-#### [](#required-dependencies)[6.3.6.所需依赖项](#required-dependencies) ####
+#### [](#required-dependencies)[6.3.6.所需依赖项](#required-dependencies)
在 YAML 中,所需的依赖项由`required`属性表示。
@@ -534,9 +527,9 @@ headers:
如果你的应用程序无法在引导期间定位所需的依赖项,那么它将抛出一个异常,并且 Spring 上下文将无法设置。换句话说,如果所需的依赖项未在 ZooKeeper 中注册,则应用程序无法启动。
-你可以阅读有关 Spring Cloud ZooKeeper Presence Checker[在本文的后面部分](#spring-cloud-zookeeper-dependency-watcher-presence-checker)的更多信息。
+你可以阅读更多关于 Spring Cloud ZooKeeper Presence Checker[在本文的后面部分](#spring-cloud-zookeeper-dependency-watcher-presence-checker)的信息。
-#### [](#stubs)[6.3.7. Stubs](#stubs) ####
+#### [](#stubs)[6.3.7.小作品](#stubs)
可以为 jar 包含依赖项存根的 jar 提供一个以冒号分隔的路径,如以下示例所示:
@@ -554,30 +547,29 @@ headers:
`stubs: org.springframework:myApp`
-### [](#spring-cloud-zookeeper-dependencies-configuring)[6.4. Configuring Spring Cloud Zookeeper Dependencies](#spring-cloud-zookeeper-dependencies-configuring) ###
+### [](#spring-cloud-zookeeper-dependencies-configuring)[6.4. Configuring Spring Cloud Zookeeper Dependencies](#spring-cloud-zookeeper-dependencies-configuring)
你可以设置以下属性来启用或禁用 ZooKeeper 依赖项功能的部分功能:
-* `spring.cloud.zookeeper.dependencies`:如果未设置此属性,则不能使用 ZooKeeper 依赖关系。
+* `spring.cloud.zookeeper.dependencies`:如果未设置此属性,则不能使用 ZooKeeper 依赖项。
* `spring.cloud.zookeeper.dependency.loadbalancer.enabled`(默认启用):开启特定于 ZooKeeper 的定制负载平衡策略,包括`ZookeeperServiceInstanceListSupplier`和基于依赖项的负载平衡`RestTemplate`设置。
-* `spring.cloud.zookeeper.dependency.headers.enabled`(默认情况下启用):此属性注册了一个`FeignBlockingLoadBalancerClient`,该属性会自动将适当的标题和内容类型附加到它们的版本中,如依赖项配置中所示。如果没有这个设置,这两个参数将无法工作。
+* `spring.cloud.zookeeper.dependency.headers.enabled`(默认情况下启用):此属性注册了`FeignBlockingLoadBalancerClient`,该属性会自动将适当的标题和内容类型附加到它们的版本中,如依赖项配置中所示。如果没有这个设置,这两个参数将无法工作。
-* `spring.cloud.zookeeper.dependency.resttemplate.enabled`(默认情况下启用):启用时,此属性修改带有`@LoadBalanced`注释的 `resttemplate’的请求标头,以便将标头和内容类型与依赖项配置中设置的版本一起传递。如果没有此设置,这两个参数将无法工作。
+* `spring.cloud.zookeeper.dependency.resttemplate.enabled`(默认情况下启用):启用时,此属性修改`@LoadBalanced`-带注释的`RestTemplate`的请求标头,使其传递带有依赖项配置中设置的版本的标头和内容类型。如果没有这个设置,这两个参数将无法工作。
-[](#spring-cloud-zookeeper-dependency-watcher)[7. Spring Cloud Zookeeper Dependency Watcher](#spring-cloud-zookeeper-dependency-watcher)
-----------
+## [](#spring-cloud-zookeeper-dependency-watcher)[7. Spring Cloud Zookeeper Dependency Watcher](#spring-cloud-zookeeper-dependency-watcher)
-依赖项监视器机制允许你将侦听器注册到依赖项。实际上,该功能是`Observator`模式的一种实现。当依赖项改变时,它的状态(向上或向下),可以应用一些自定义逻辑。
+依赖项监视器机制允许你将侦听器注册到依赖项。实际上,该功能是`Observator`模式的一种实现。当依赖项发生变化时,它的状态(向上或向下),可以应用一些自定义逻辑。
-### [](#activating-2)[7.1. Activating](#activating-2) ###
+### [](#activating-2)[7.1.激活](#activating-2)
-Spring 云 ZooKeeper 依赖项功能需要被启用,以便你使用依赖项观察机制。
+Spring Cloud ZooKeeper 依赖项功能需要被启用,以便你使用依赖项观察机制。
-### [](#registering-a-listener)[7.2.注册侦听器](#registering-a-listener) ###
+### [](#registering-a-listener)[7.2.注册侦听器](#registering-a-listener)
-要注册一个侦听器,你必须实现一个名为 `org.springframework.cloud.zookeeper.discovery.watcher.dependencywatcherlistener’的接口,并将其注册为 Bean。该接口为你提供了一种方法:
+要注册一个侦听器,你必须实现一个名为`org.springframework.cloud.zookeeper.discovery.watcher.DependencyWatcherListener`的接口,并将其注册为 Bean。该接口为你提供了一种方法:
```
void stateChanged(String dependencyName, DependencyState newState);
@@ -585,22 +577,21 @@ void stateChanged(String dependencyName, DependencyState newState);
如果你想注册一个特定依赖项的侦听器,那么`dependencyName`将是你的具体实现的鉴别器。`newState`为你提供有关你的依赖关系是否已更改为`CONNECTED`或`DISCONNECTED`的信息。
-### [](#spring-cloud-zookeeper-dependency-watcher-presence-checker)[7.3.使用临场感检查器](#spring-cloud-zookeeper-dependency-watcher-presence-checker) ###
+### [](#spring-cloud-zookeeper-dependency-watcher-presence-checker)[7.3.使用临场感检查器](#spring-cloud-zookeeper-dependency-watcher-presence-checker)
与依赖项监视器绑定的是名为存在检查器的功能。它允许你在应用程序启动时提供自定义行为,以便根据依赖关系的状态做出反应。
-抽象的 `org.SpringFramework.Cloud.ZooKeeper.Discovery.Watcher.Presence.DependencyPresenceOnStartupVerifier’类的默认实现是 `org.SpringFramework.Cloud.ZooKeeper.Discovery.Watcher.Presence.DefaultDependencyPresenceOnStartupVerifier’,其工作方式如下。
+抽象`org.springframework.cloud.zookeeper.discovery.watcher.presence.DependencyPresenceOnStartupVerifier`类的默认实现是`org.springframework.cloud.zookeeper.discovery.watcher.presence.DefaultDependencyPresenceOnStartupVerifier`,其工作方式如下。
1. 如果依赖项被标记为 US`required`,并且不在 ZooKeeper 中,那么当应用程序启动时,它将抛出一个异常并关闭。
-2. 如果依赖项不是`required`,则 `org.springframework.cloud.zookeeper.discovery.watcher.presence.logmissingDependencyChecker’记录在`WARN`级别缺少依赖项。
+2. 如果依赖项不是`required`,则`org.springframework.cloud.zookeeper.discovery.watcher.presence.LogMissingDependencyChecker`记录在`WARN`级别缺少依赖项。
因为`DefaultDependencyPresenceOnStartupVerifier`只有在没有`DependencyPresenceOnStartupVerifier`类型的 Bean 时才注册,所以可以重写此功能。
-[](#spring-cloud-zookeeper-config)[8.使用 ZooKeeper 的分布式配置](#spring-cloud-zookeeper-config)
-----------
+## [](#spring-cloud-zookeeper-config)[8.使用 ZooKeeper 的分布式配置](#spring-cloud-zookeeper-config)
-ZooKeeper 提供了一个[层次命名空间](https://zookeeper.apache.org/doc/current/zookeeperOver.html#sc_dataModelNameSpace),它允许客户端存储任意数据,例如配置数据。 Spring Cloud ZooKeeper Config 是[配置服务器和客户端](https://github.com/spring-cloud/spring-cloud-config)的一种替代方案。在特殊的“引导”阶段,将配置加载到 Spring 环境中。默认情况下,配置存储在`/config`名称空间中。根据应用程序的名称和活动配置文件创建了多个“PropertySource”实例,以模拟解析属性的 Spring 云配置顺序。例如,名称为`testApp`且配置文件为`dev`的应用程序具有为其创建的以下属性源:
+ZooKeeper 提供了一个[层次命名空间](https://zookeeper.apache.org/doc/current/zookeeperOver.html#sc_dataModelNameSpace),它允许客户端存储任意数据,例如配置数据。 Spring Cloud ZooKeeper Config 是[配置服务器和客户端](https://github.com/spring-cloud/spring-cloud-config)的一种替代方案。在特殊的“引导”阶段,将配置加载到 Spring 环境中。默认情况下,配置存储在`/config`名称空间中。基于应用程序的名称和活动配置文件,创建了多个`PropertySource`实例,以模拟解析属性的 Spring Cloud配置顺序。例如,名称为`testApp`且配置文件为`dev`的应用程序具有为其创建的以下属性源:
* `config/testApp,dev`
@@ -610,18 +601,18 @@ ZooKeeper 提供了一个[层次命名空间](https://zookeeper.apache.org/doc/c
* `config/application`
-最具体的属性源位于顶部,而最不具体的属性源位于底部。`config/application`命名空间中的属性应用于所有使用 ZooKeeper 进行配置的应用程序。名称空间`config/testApp`中的属性仅对名为`testApp`的服务实例可用。
+最具体的属性源位于顶部,而最不具体的属性源位于底部。`config/application`命名空间中的属性应用于所有使用 ZooKeeper 进行配置的应用程序。`config/testApp`命名空间中的属性仅对名为`testApp`的服务实例可用。
当前在启动应用程序时读取配置。向`/refresh`发送一个 HTTP`POST`请求会导致重新加载配置。监视配置名称空间(ZooKeeper 支持的)当前未实现。
-### [](#activating-3)[8.1. Activating](#activating-3) ###
+### [](#activating-3)[8.1.激活](#activating-3)
-包括对 `org.springframework.cloud: Spring-cloud-starter-zookeeper-config 的依赖,使自动配置能够设置 Spring cloud zookeeper config。
+包括对`org.springframework.cloud:spring-cloud-starter-zookeeper-config`的依赖可以实现自动配置,从而设置 Spring Cloud ZooKeeper 配置。
| |在使用 ZooKeeper 的 3.4 版本时,你需要更改
包含依赖项的方式,如[here](#spring-cloud-zookeeper-install)所述。|
|---|----------------------------------------------------------------------------------------------------------------------------------------------------------|
-### [](#config-data-import)[8.2. Spring Boot Config Data Import](#config-data-import) ###
+### [](#config-data-import)[8.2. Spring Boot Config Data Import](#config-data-import)
Spring Boot2.4 引入了一种通过`spring.config.import`属性导入配置数据的新方法。这是现在从 ZooKeeper 获得配置的默认方式。
@@ -635,7 +626,7 @@ spring.config.import=optional:zookeeper:
这将在“localhost:2181”的默认位置连接到 ZooKeeper。如果无法连接到 ZooKeeper,删除`optional:`前缀将导致 ZooKeeper 配置失败。要更改 ZooKeeper Config 的连接属性,可以设置`spring.cloud.zookeeper.connect-string`,也可以将 connect 字符串添加到`spring.config.import`语句中,例如,`spring.config.import=optional:zookeeper:myhost:2818`。导入属性中的位置优先于`connect-string`属性。
-ZooKeeper Config 将尝试根据`spring.cloud.zookeeper.config.name`(默认为`spring.application.name`属性的值)和`spring.cloud.zookeeper.config.default-context`(默认为`application`)从四个自动上下文加载值。如果你希望指定上下文而不是使用计算的上下文,那么可以将该信息添加到`spring.config.import`语句中。
+ZooKeeper Config 将尝试根据`spring.cloud.zookeeper.config.name`(默认为`spring.application.name`属性的值)和`spring.cloud.zookeeper.config.default-context`(默认为`application`)从四个自动上下文加载值。如果你希望指定上下文,而不是使用计算的上下文,那么可以将该信息添加到`spring.config.import`语句中。
application.properties
@@ -648,7 +639,7 @@ spring.config.import=optional:zookeeper:myhost:2181/contextone;/context/two
| |通过`spring.config.import`导入 Spring 引导配置数据方法所需的`bootstrap`文件(属性或 YAML)是**不是**。|
|---|--------------------------------------------------------------------------------------------------------------------------------------|
-### [](#customizing)[8.3.定制](#customizing) ###
+### [](#customizing)[8.3.定制](#customizing)
可以通过设置以下属性来定制 ZooKeeper 配置:
@@ -674,9 +665,9 @@ spring:
| |如果你已经设置了`spring.cloud.bootstrap.enabled=true`或`spring.config.use-legacy-processing=true`,或者包含了`spring-cloud-starter-bootstrap`,那么上述值将需要放置在`bootstrap.yml`中,而不是`application.yml`中。|
|---|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-### [](#access-control-lists-acls)[8.4.访问控制列表(ACLS)](#access-control-lists-acls) ###
+### [](#access-control-lists-acls)[8.4.访问控制列表(ACLS)](#access-control-lists-acls)
-通过调用`CuratorFramework` Bean 的`addAuthInfo`方法,可以为 ZooKeeper ACLS 添加身份验证信息。实现这一点的一种方法是提供自己的“curatorframework” Bean,如下例所示:
+通过调用`CuratorFramework` Bean 的`addAuthInfo`方法,可以为 ZooKeeper ACLS 添加身份验证信息。实现这一点的一种方法是提供你自己的`CuratorFramework` Bean,如下例所示:
```
@BoostrapConfiguration
@@ -694,7 +685,7 @@ public class CustomCuratorFrameworkConfig {
请参阅[ZookeeperAutoConfiguration 类](https://github.com/spring-cloud/spring-cloud-zookeeper/blob/master/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java)以查看`CuratorFramework` Bean 的默认配置。
-或者,你可以从依赖于现有的“curatorFramework” Bean 的类中添加你的凭据,如下例所示:
+或者,你可以从依赖于现有`CuratorFramework` Bean 的类中添加凭据,如以下示例所示:
```
@BoostrapConfiguration
@@ -707,12 +698,13 @@ public class DefaultCuratorFrameworkConfig {
}
```
-此 Bean 的创建必须在引导阶段发生。你可以注册要在此阶段运行的配置类,方法是使用“@bootstrapconfiguration”对它们进行注释,并将它们包含在一个逗号分隔的列表中,你将该列表设置为“resources/meta-inf/ Spring.factories”文件中`org.springframework.cloud.bootstrap.BootstrapConfiguration`属性的值,如以下示例所示:
+此 Bean 的创建必须在引导阶段发生。你可以注册要在此阶段运行的配置类,方法是用`@BootstrapConfiguration`对它们进行注释,并将它们包括在一个逗号分隔的列表中,你将该列表设置为`Party-INF/ Spring.Factories`文件中`org.springframework.cloud.bootstrap.BootstrapConfiguration`属性的值,如以下示例所示:
-Party-INF/ Spring.Factories
+resources/META-INF/spring.factories
```
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
my.project.CustomCuratorFrameworkConfig,\
my.project.DefaultCuratorFrameworkConfig
-```
\ No newline at end of file
+```
+
diff --git a/docs/spring-credhub/READEME.md b/docs/spring-credhub/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-flo/READEME.md b/docs/spring-flo/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-for-apache-kafka/READEME.md b/docs/spring-for-apache-kafka/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-for-graphql/READEME.md b/docs/spring-for-graphql/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-hateoas/READEME.md b/docs/spring-hateoas/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-integration/READEME.md b/docs/spring-integration/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-ldap/READEME.md b/docs/spring-ldap/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-rest-docs/READEME.md b/docs/spring-rest-docs/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-security/READEME.md b/docs/spring-security/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-session/READEME.md b/docs/spring-session/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-shell/READEME.md b/docs/spring-shell/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-statemachine/READEME.md b/docs/spring-statemachine/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-vault/READEME.md b/docs/spring-vault/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-web-flow/READEME.md b/docs/spring-web-flow/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/docs/spring-web-services/READEME.md b/docs/spring-web-services/READEME.md
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000