因为项目在开发环境、测试环境、生产环境中的配置多少会有些不同,每次去更改配置文件会显得操作冗余复杂,还容易产生错误。实现ConfigServer环境切换的改造,更改配置文件的复杂操作仅仅用一行命令行或者代码就可以完成。
步骤如下:
1.将config-server里面的xiangmu.properties改造为xiangmu-dev.properties和xiangmu-test.properties(即开发环境和测试环境的配置文件)。
2.找到对应的config-client,在其bootstrap.properties中添加“spring.profiles.active=dev”,即服务启动默认去匹配xiangmu-dev.properties。
或者也可以在启动类上使用注解“@PropertySource("classpath:xiangmu-dev.properties")”。
3.优化configserver目录结构:在config-server的bootstrap.properties加入“spring.cloud.config.server.native.search-locations=classpath:/shared/{application}”,然后我们此bootstrap.properties相同目录下创建shared/xiangmu/文件夹,并将xiangmu的配置文件均置于此。
4.测试环境部署时选择test配置文件“java -jar xxx.jar --spring.profiles.active=test”
Spring Boot提供的配置优先级如下(从高到低):
- 命令行参数
- 通过System.getProperties() 获取的 Java 系统参数
- 操作系统环境变量
- 从 java:comp/env 得到的 JNDI 属性
- 通过RandomValuePropertySource 生成的“random.*”属性
- 应用 Jar 文件之外的属性文件。(通过spring.config.location参数)
- 应用 Jar 文件内部的属性文件
- 在应用配置 Java 类(包含“@Configuration”注解的 Java 类)中通过“@PropertySource”注解声明的属性文件。
- 通过“SpringApplication.setDefaultProperties”声明的默认属性。