1

我有疑问是否有任何方法可以在应用程序启动时检索某些值并将它们注入 bootstrap.yml。

我有这样的配置文件:

spring:
  application:
    name: myApp

  cloud:
    consul:
      enabled: true
      host: localhost
      port: 8500
      config:
        enabled: true

  datasource:
    url: jdbc:oracle:thin:@localhost:1111:XXXX
    username: ${nameOfVariable1}
    password: ${nameOfVariable1}
    driver-class-name: oracle.jdbc.OracleDriver

例如,我需要配置嵌入式 tomcat 端口或数据库凭据,我不想将其硬编码在 .yml 属性文件中,而是想在 .yml 中放入一些变量名,这样 Spring 会从 Consul 带来价值. 可能吗?

4

1 回答 1

3

您可以Spring Cloud Consul Config在特殊的“引导”阶段使用有助于将配置加载到 Spring 环境中的项目。

3个步骤:

  1. 添加 pom 依赖:spring-cloud-starter-consul-config
  2. 启用领事配置:spring.cloud.consul.config.enabled=true
  3. 在特定文件夹的 consul kv 中添加一些配置,例如 key: config/testConsulApp/server.port, value:8081

然后启动示例 Web 应用程序,它将监听 8081。

spring cloud consul doc的更多详细信息。

演示代码在这里

于 2019-02-11T07:40:26.303 回答