扩展 Spring Cloud Config Client 的正确方法是什么?

What is the right approach for extending Spring Cloud Config Client?

我想用 oAuth 实现替换 Spring 云配置服务器的基本身份验证。让我们暂时不理会 Config Server,专注于 Config Client 的更改。显然我不想为整个事情编写我自己的实现,而是执行我自己的逻辑并在标准配置客户端上回退。此外,我必须将我的更改打包到库中,因为我将在多个微服务中使用它。

长话短说我想实现以下目标:

1a。创建自定义 Starter,它将包含 Spring Cloud Config Client 作为依赖项。它是否可行或必要?

1b。仅使用我的自定义逻辑创建自定义 Starter,该逻辑将在 Spring Cloud Config Client 之前执行。在这种情况下,每个微服务都将具有 Spring Cloud Config Client 和自定义 Starter 作为依赖项。如何管理执行顺序并将自定义逻辑结果注入 Config Client?

2.Introduce 新 bootstrap 设置。例如spring.cloud.config.custom.username 和 spring.cloud.config.custom.password(可选)。

3.Introduce 自定义 Starter 的自定义注释。例如@enableCustomConfigClient(可选)。

我开始使用 /resources/META-INF/spring.factories:

中的以下代码构建自定义 Starter
# Bootstrap components
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.example.greeter.config.ConfigClientBootstrapConfiguration

但是这段代码是在设置配置文件后调用的,而不是像 Config Client 那样首先执行的操作。

感谢任何建议,尤其是代码示例。谢谢!

我选择的发帖方式供以后参考。

  1. 创建将在 Spring 云配置客户端之上/之前执行的新包。这里有两个主要特点:

    • 用org.springframework.cloud.bootstrap.BootstrapConfiguration={YOUR_CLASS}

      [=创建文件src/main/resources/META-INF/spring.factories 37=]
    • 在{YOUR_CLASS}中应用自定义逻辑。不要忘记使用 @org.springframework.core.annotation.Order({YOUR_PRECEDENCE}) 并且 Ordered.LOWEST_PRECEDENCE 会被执行

  2. 从上一步构建 jar 并将其包含到您的项目中(作为本地文件或通过 artifactory)

  3. 将自定义逻辑添加到 Spring 云配置服务器,以便它可以使用 JWT。

工作示例在这里:https://github.com/ka4ok85/spring-cloud-config-client-jwt