Spring Cloud Config Server 使用檔案系統classpath配置(File System Backend)。
範例環境:
- Spring Boot 2.3.4.RELEASE
- Spring Cloud Hoxton.SR8
參考「Spring Cloud Config Server 檔案系統配置範例」。
本範例要把properties設定在專案的classpath目錄中,而非專案以外的檔案系統目錄。
修改Spring Cloud Config Server的application.yml
配置如下,把spring.cloud.config.server.native.searchLocations
的值改為classpath:config/
,也就是以專案classpath下的config/
做為properties檔來源。
application.yml
server:
port: 8888
spring:
profiles:
active: native
cloud:
config:
server:
native:
searchLocations: classpath:config/
在專案的classpath src/main/resources
新增config
資料夾,並把以下properties放在這裡。
config-test.properties
config.env=CONFIG TEST
config-dev.properties
config.env=CONFIG DEV
config-prod.properties
config.env=CONFIG PROD
demo-test.properties
demo.env=DEMO TEST
demo-dev.properties
demo.env=DEMO DEV
demo-prod.properties
demo.env=DEMO PROD
設定properties檔後啟動專案,可透過下面url格式取得對應的設定檔資源。
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
{application}
對應Config Clientbootstrap.yml
(bootstrap.properties
)的spring.application.name
。{profile}
對應Config Clientbootstrap.yml
(bootstrap.properties
)的spring.profiles.active
啟用的profile。{label}
對應Config Server的spring.cloud.config.label
,決定git repo上設定檔的的label(分支,預設master)。
而本範例的配置檔來源為檔案系統classpath,而非git repo,所以label用不到。
從上面的配置檔來看,{application}
分別有config
即demo
;
{profile}
在config
即demo
皆有test
、dev
、prod
。
例如輸入http://localhost:8888/config/test
回傳以下結果。
{
"name":"config",
"profiles":[
"test"
],
"label":null,
"version":null,
"state":null,
"propertySources":[
{
"name":"file:///D:/server/config/config-test.properties",
"source":{
"config.env":"CONFIG TEST"
}
}
]
}
輸入http://localhost:8888/config/prod
回傳以下結果。
{
"name":"config",
"profiles":[
"prod"
],
"label":null,
"version":null,
"state":null,
"propertySources":[
{
"name":"file:///D:/server/config/config-prod.properties",
"source":{
"config.env":"CONFIG PROD"
}
}
]
}
輸入http://localhost:8888/demo/dev
回傳以下結果。
{
"name":"demo",
"profiles":[
"dev"
],
"label":null,
"version":null,
"state":null,
"propertySources":[
{
"name":"file:///D:/server/config/demo-dev.properties",
"source":{
"demo.env":"DEMO DEV"
}
}
]
}
輸入http://localhost:8888/config-dev.properties
回傳以下結果。
config.env: CONFIG DEV
輸入http://localhost:8888/demo-test.properties
回傳以下結果。
demo.env: DEMO TEST
輸入http://localhost:8888/demo-prod.properties
回傳以下結果。
demo.env: DEMO PROD
參考github。
接著參考「Spring Cloud Config Client 讀取Config Server配置範例」配置Config Client來讀取Config Server的properties。
沒有留言:
張貼留言