【发布时间】:2016-07-07 17:25:44
【问题描述】:
我有一个 Spring Boot 应用程序,它在 .yml 文件中定义了许多属性。我正在从文件中的属性转向云中的属性,因此我正在使用 spring cloud consul 中的键/值功能。
我能够从 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 cloud consul 如何与 spring boot 一起用于此特定目的,我们将不胜感激。关于它的文档并不多。
【问题讨论】:
-
如果您将它与 Spring Cloud Config Client 一起使用,
@Value应该可以正常工作。 -
@M.Deinum 我不是,我正在使用 Spring Cloud Consul
-
那是服务器端,spring cloud consul 可以很容易地与 spring cloud config 集成,然后你就可以开箱即用。见cloud.spring.io/spring-cloud-consul/spring-cloud-consul.html(最后一节)。
-
@M.Deinum 你有这方面的文件吗?到目前为止我所阅读的所有内容都让我相信,如果我想通过 Spring 连接到 consul 代理,那么我必须在我的应用程序中使用 spring cloud consul。你是说我可以在我的应用程序中使用 spring cloud config 并将其指向运行 consul 的服务器?
-
嗯,不完全是 spring-cloud-config,而是 consul 对应物(在我之前评论中的文档中)。
标签: java spring-boot cloud consul