Spring Cloud Config也提供本地存储配置的方式。我们只需要设置属性spring.profiles.active=native
,Config Server会默认从应用的src/main/resource
目录下检索配置文件。也可以通过spring.cloud.config.server.native.searchLocations=file:F:/properties/
属性来指定配置文件的位置。虽然Spring Cloud Config提供了这样的功能,但是为了支持更好的管理内容和版本控制的功能,还是推荐使用git的方式。
服务端验证
为了验证上面完成的配置服务器,在[http://git.oschina.net/didispace/SpringBoot-Learning/Chapter9-1-4/](() 下创建了一个config-repo目录作为配置仓库,并根据不同环境新建了下面四个配置文件:
didispace.properties
didispace-dev.properties
didispace-test.properties
didispace-prod.properties
其中设置了一个from属性,为每个配置文件分别设置了不同的值,如:
from=git-default-1.0
from=git-dev-1.0
from=git-test-1.0
from=git-prod-1.0
为了测试版本控制,在master中,我们都加入1.0的后缀,同时创建一个config-label-test分支,并将各配置文件中的值用2.0作为后缀。
完成了这些准备工作之后,我们就可以通过浏览器或POSTMAN等工具直接来访问到我们的配置内容了。
URL与配置文件的映射关系如下:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
上面的url会映射{application}-{profile}.properties
对应的配置文件,{label}
对应git上不同的分支,默认为master。
我们可以尝试构造不同的url来访问不同的配置内容,比如:要访问config-label-test分支,didispace应用的prod环境,可以通过这个url:[http://localhost:7001/didispace/prod/config-label-test](()
{
“name”: “didispace”,
“profiles”: [
“prod”
],
“label”: “config-label-test”,
“version”: “19de8a25575a7054a34230f74a22aa7f5575a9d1”,
“propertySources”: [
{
“name”: “http://git.oschina.net/didispace/SpringBoot-Learning/Chapter9-1-4/config-repo/didispace-prod.properties”,
“source”: {
“from”: “git-prod-2.0”
}
},
{
“name”: “http://git.oschina.net/didispace/SpringBoot-Learning/Chapter9-1-4/config-repo/didispace.properties”,
“source”: {
“from”: “git-default-2.0”
}
}
]
}
微服务端映射配置
在完成并验证了配置服务中心之后,下面看看我们如何在微服务应用中获取配置信息。
org.springframework.boot
spring-boot-starter-parent
1.3.5.RELEASE
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-config
org.springframework.cloud
spring-cloud-dependencies
Brixton.RELEASE
pom
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
bootstrap.properties
配置,来指定config server,例如:spring.application.name=didispace
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:7001/
server.port=7002
spring.application.name:对应前配置文件中的{application}部分
spring.cloud.config.profile:对应前配置文件中的{profile}部分
spring.cloud.config.label:对应前配置文件的git分支
spring.cloud.config.uri:配置中心的地址
这里需要格外注意:上面这些属性必须配置在bootstrap.properties
中,config部分内容才能被正确加载。因为config的相关配置会先于application.properties
,而bootstrap.properties
的加载也是先于application.properties
。
@RefreshScope