2

我们正在利用 Spring Cloud Config 和 Spring Cloud Config Vault。我们想知道是否有一种“引导引导程序”的方法,即我们希望 Spring Cloud 配置服务器被命中,然后从中提取属性以在我们的库配置中利用。我们查看了订单,但它似乎不起作用,我认为这是因为后处理订单,但我希望我可能会遗漏一些东西。

4

3 回答 3

4

TL;博士

它不起作用。

解释

Spring Cloud 使用它的引导上下文所做的是设置一个应用程序上下文,其中包含一组PropertySource从 Spring bean 初始化的 s。然后将引导上下文用作 Spring Boot 创建的实际上下文的父上下文。属性查找在其自己的上下文和父上下文中查找属性。

配置属性在启动过程中很早就被初始化,它们使用当前Environment. 在ConfigurationProperties初始化 bean 时,Environment还没有包含任何 remote PropertySource

我在这里看到的唯一选择(除了创建 bootstrap-bootstrap-context)是在您的main类中使用 Spring Cloud Config 客户端并在构建任何 Spring 上下文之前提供 Vault 属性。

于 2018-02-15T14:04:54.083 回答
0

也许你可以,但它需要PropertySourceBootstrapConfiguration#initialize()方法覆盖。您不能禁用 bean ,但可以使用inPropertySourceBootstrapConfiguration禁用它的初始化方法(以避免过时的外部属性源调用)。在您的方法中,您可以从 config-server 检索属性,然后通过插入在 config-server secretId 中生成的令牌来自定义您的属性。不要忘记将您的添加到 spring.factories。applicationContext.getBeanFactory().getBean(PropertySourceBootstrapConfiguration.class).setPropertySourceLocators(new ArrayList<>())CustomPropertySourceBootstrapConfigurationCustomPropertySourceBootstrapConfiguration#initializevaultPropertySourceLocatorCustomPropertySourceBootstrapConfiguration

所以,这并不容易,但有可能。

于 2019-11-05T11:15:07.907 回答
0

我们使用 EnvironmentPostProcessor 创建了自定义数据源,它将在自动配置 beans https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.application.customize-the-environment-之前被调用或应用程序上下文

于 2021-10-11T13:07:52.987 回答