从 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,一切都开始工作了。
我有一个 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,一切都开始工作了。