我有一个Spring启动应用程序,它在.yml
文件中定义了很多属性。我正在将文件中的属性转移到云中,所以我正在使用spring cloud 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文件或部分文件。
有没有办法让这些属性从领事加载而无需更改类中的任何代码?或者我是否需要更改这些类以遵循使用env
对象的示例?
此外,我们将非常感谢任何有关弹簧云如何与弹簧靴一起工作以进行此特定目的的进一步见解。它上面没有很多文档。
答案 0 :(得分:2)
我能够让它发挥作用,但这有点棘手。您需要添加spring cloud consul starter依赖项。我只有春天云consul配置依赖。
我必须在我的application.yml和bootstrap.yml中添加consul配置属性,我的boostrap中的属性只设置了格式和数据键:
spring:
cloud:
consul:
config:
format: YAML
data-key: data
这告诉spring boot加载一个yaml blob,它是我的应用程序配置云目录中的密钥数据的值。
我的application.yml中的配置是他们在示例中提供的默认配置。一旦我将这些配置和@autoconfiguration标签添加到我的服务主应用程序类,一切都开始工作。