我有一些具有相同配置的微服务,每个微服务都取决于Spring概要文件。 @ConfigurationProperties
接受我在YAML应用程序配置文件中的值。我想将此配置移至通用项目,而不移至微服务YAML配置。
问题是我对不同的配置文件有2种不同的配置。我可以使用@Value
来注入默认值,但是我只能这样做一次。有没有一种方法可以让多个默认值取决于特定的Spring配置文件?
在我的项目中,我们使用Java配置,而不是XML。
答案 0 :(得分:1)
您是说像下面吗?我在同一yml文件(application.yml)中具有两个具有相同属性(app.port)的配置文件A1和B1。配置文件由---
---
spring:
profiles: A1
app.port: 8080
---
spring:
profiles: B1
app.port: 9090
---
答案 1 :(得分:1)
如果您想从公共位置读取属性,请在微服务中写入bootstrap.yml
并删除application.yml
。
bootstrap.yml:
spring:
config:
location: file:/home/external/properties/location/
name: application
profiles:
active: dev
文件位置:/home/external/properties/location/
假设您需要开发和生产环境,然后将此3个属性文件保存在此位置。
application.yml
application-dev.yml
application-prod.yml
Spring Boot首先读取application.yml
属性。如果在dev
中设置了活动配置文件bootstrap.yml
,则application.yml
的值将被application-dev.yml
覆盖。
对于其他值,只需更改bootstrap.yml
中的微服务的活动配置文件即可。
答案 2 :(得分:0)
根据我的搜索,我无法根据需要解决此问题。可能spring-cloud-config
可以解决我的问题,但是我不想实现这一问题。我更改了库,不再需要这些单独的配置。