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

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

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

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

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

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

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. 创建新包,该包将在 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 并将其包含到您的项目中(作为本地文件或通过 Artifact )

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

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

关于java - 扩展 Spring Cloud Config Client 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45260122/

相关文章:

spring-cloud - 我可以检索发现客户端实例 ID/名称吗?

java - 在 Android/Java 中使用 itext 在单元格中添加删除线

java - Android Studio Java中的错误

组合中的 Spring 验证

java - 在单元测试中与 KafkaEmbedded 一起使用时,@DirtiesContext 的行为是什么?

java - 在 ConfigurationProperties 更改后,使用 Spring @RefreshScope、@Conditional 注解替换运行时的 bean 注入(inject)

java - ElasticSearch在Java中排序的条件

java - 我将如何在 Big Theta Θ 表示法下分析该算法的形式复杂性?

java - Maven 项目中关于添加 jasper-report 依赖项的构建问题

java - 无论如何在 spring4 中禁用注释?