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

时间:2017-07-22 23:15:01

标签: java spring spring-cloud spring-cloud-config

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

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

1a上。创建自定义Starter,其中包含Spring Cloud Config Client作为依赖项。它甚至是可行的还是必要的?

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

2.介绍新的引导程序设置。例如spring.cloud.config.custom.username和spring.cloud.config.custom.password(可选)。

3.为自定义Starter引入自定义注释。例如@enableCustomConfigClient(可选)。

我开始使用/resources/META-INF/spring.factories中的以下代码构建自定义Starter:

# Bootstrap components
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.example.greeter.config.ConfigClientBootstrapConfiguration

但在设置配置文件后调用此代码,而不是像Config Client那样的第一件事。

任何建议,特别是代码示例表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

发布方法我选择以供将来参考。

  1. 创建将在Spring Cloud Config Client之上/之前执行的新软件包。这里有两个主要特征:

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

    • 创建文件 src / main / resources / META-INF / spring.factories
    • 在{YOUR_CLASS}中应用自定义逻辑。不要忘记使用 @ org.springframework.core.annotation.Order({YOUR_PRECEDENCE})以及 Ordered.LOWEST_PRECEDENCE 将首先执行的事实

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

  3. 将自定义逻辑添加到Spring Cloud Config Server,以便它可以使用JWT。

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