【发布时间】:2019-11-18 10:55:03
【问题描述】:
我在本地创建了一个带有“consul-config”功能的简单 micronaut 应用程序。我的代码能够连接并从领事键/值存储中获取属性。我的 bootstrap.yml 中有以下配置
micronaut:
application:
name: user-service
config-client:
enabled: true
consul:
client:
registration:
enabled: true
defaultZone: "${CONSUL_HOST:localhost}:${CONSUL_PORT:8500}"
一切都很好,但我不想在本地计算机上使用 consul,因为它涉及网络活动,所以启动需要一些时间。我想避免在本地使用 consul,但在开发、测试和生产环境中需要它。
我的应用中有以下代码。 @Value 注释将尝试加载“db-schema”,如果没有找到,则使用“local”作为默认值。因此,如果 consul 被禁用,那么我的应用程序应该使用“本地”,否则它应该根据 consul 配置加载值。
@Value("${db-schema:local}")
private String dbSchema;
如何在不更改代码且仅使用环境选项的情况下做到这一点?
我尝试设置 VM 选项“-Dmicronaut.config-client.enabled=false”,但它仍然加载 bootstrap.yml 并尝试连接 consul。
【问题讨论】:
-
你可以根据不同的环境分割你的应用程序属性、bean - local/dev/prod...看看stackoverflow.com/a/56589325/8112217
-
此链接显示有条件地加载 bean,但我需要本地的所有 bean,除非它不应该去 consul 进行配置。
-
不仅是bean,还有条件属性,例如
db-schema的不同属性
标签: java microservices micronaut