从 spring 云领事加载 values/properties 的正确方法

Correct way to load values/properties from spring cloud consul

我有一个 spring 引导应用程序,它在 .yml 文件中定义了很多属性。我正在从文件中的属性转移到云中的属性,因此为此我使用 spring 云领事中的 key/value 功能。

我能够从 consul 中检索给定键的值,但是我看到记录的唯一方法也是我能够做到的唯一方法是这样的:

@Autowired
private Environment env;

    @RequestMapping("/test")
    String home() {
         return env.getProperty("test.property");
    }

这很好,但我有一些现有的 类 仍然设置为以旧方式加载属性:

@Value("${test.property}")
String testProperty;

将 spring cloud consul 的依赖项添加到我的项目后,我收到新错误,提示无法解析所有这些属性。我认为这是因为 spring boot 看到 consul 依赖项并且现在忽略 yml 文件或其中的一部分。

有没有办法让这些属性从 consul 加载而无需更改 类 中的任何代码?或者我是否需要更改这些 类 以遵循使用 env 对象的示例?

此外,如果您进一步了解 spring 云领事如何与 spring 引导一起用于此特定目的,我们将不胜感激。没有很多关于它的文档。

我能够让它工作,但有点棘手。您需要添加 spring cloud consul starter 依赖项。我只有 spring 云领事配置依赖项。

我必须将 consul 配置属性添加到我的 application.yml 和 bootstrap.yml,我的 boostrap 中的属性只设置格式和数据键:

spring:
  cloud:
    consul:
      config:
        format: YAML
        data-key: data

这告诉 spring 启动加载一个 yaml blob,它是我的应用程序配置云目录中关键数据的值。

我的application.yml中的配置是他们在示例中提供的默认配置。一旦我将这些配置和 @autoconfiguration 标记添加到我的服务主应用程序 class,一切都开始工作了。