我的问题是关于 spring boot 自动配置以及是否可以根据哪个配置文件处于活动状态来设置默认属性值。
有时在许多微服务中添加相同的属性。例如,如果我们依赖一个招摇的客户。然后需要在使用该客户端的所有项目中设置所有不同环境的端点 url。如果我们可以在该客户的 starterproject 中进行设置,那就太好了。那么只有一个地方我们必须保持它。
但是该属性在所有环境中都不相同,因此应该可以为每个环境设置一个默认值。有没有最好的方法来做到这一点?
我的问题是关于 spring boot 自动配置以及是否可以根据哪个配置文件处于活动状态来设置默认属性值。
有时在许多微服务中添加相同的属性。例如,如果我们依赖一个招摇的客户。然后需要在使用该客户端的所有项目中设置所有不同环境的端点 url。如果我们可以在该客户的 starterproject 中进行设置,那就太好了。那么只有一个地方我们必须保持它。
但是该属性在所有环境中都不相同,因此应该可以为每个环境设置一个默认值。有没有最好的方法来做到这一点?
如果你使用的是 spring cloud config 服务,你可以这样安排你的配置:
src/main/resources/
bootstrap.yml
bootstrap-profile1.yml
bootstrap-profile2.yml
...
src/main/resources/profile1/
application.yml
service1.yml
service2.yml
....
src/main/resources/profile2/
application.yml
service1.yml
service2.yml
....
每个配置文件文件夹中的 application.yml 将具有每个服务的默认配置,可以在该服务的配置文件中覆盖这些配置。
bootstrap.yml 看起来像:
spring:
application:
name: config-service
cloud:
config:
server:
native:
search-locations: classpath:/profile1,classpath:/profile2,...
profiles:
active: native,${CONFIG_ENV}