三十七 Java开发学习----SpringBoot多环境配置及配置文件分类( 二 )

SpringBoot 官网已经进行了说明,参见 :
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config进入上面网站后会看到如下页面

三十七 Java开发学习----SpringBoot多环境配置及配置文件分类

文章插图
如果使用了多种方式配合同一个配置项,优先级高的生效 。
二、配置文件分类有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下
java –jar springboot.jar –-spring.profiles.active=test --server.port=85 --server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 …… …… …… …… ……针对这种情况,SpringBoot 定义了配置文件不同的放置的位置;而放在不同位置的优先级时不同的 。
SpringBoot 中4级配置文件放置位置:
  • 1级:resources/application.yml
  • 2级:resources/config/application.yml
  • 3级:target/application.yml
  • 4级:target/config/application.yml
说明:级别越高优先级越高
3级与4级留作系统打包后设置通用属性
1级与2级用于系统开发阶段设置通用属性
2.1 代码演示2.1.1 环境准备创建一个名为 springboot_06_config_fileSpringBoot 工程,,参考Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析,目录结构如下
三十七 Java开发学习----SpringBoot多环境配置及配置文件分类

文章插图
resources 下创建一个名为 config 的目录,在该目录中创建 application.yml 配置文件,而在该配置文件中将端口号设置为 81,内容如下
server:port: 81而在 resources 下创建的 application.yml 配置文件中并将端口号设置为 80,内容如下
server:port: 802.1.2 验证1级和2级的优先级运行启动引导类,可以在控制台看到如下日志信息
三十七 Java开发学习----SpringBoot多环境配置及配置文件分类

文章插图
通过这个结果可以得出类路径下的 config 下的配置文件优先于类路径下的配置文件 。
2.1.3 验证2级和4级的优先级要验证4级,按照以下步骤完成
  • 将工程打成 jar
    点击工程的 package 来打 jar
    三十七 Java开发学习----SpringBoot多环境配置及配置文件分类

    文章插图
  • 在硬盘上找到 jar 包所在位置
    三十七 Java开发学习----SpringBoot多环境配置及配置文件分类

    文章插图
  • jar 包所在位置创建 config 文件夹,在该文件夹下创建 application.yml 配置文件,而在该配合文件中将端口号设置为 82
  • 在命令行使用以下命令运行程序
    java -jar springboot_06_config_file-0.0.1-SNAPSHOT.jar运行后日志信息如下
    三十七 Java开发学习----SpringBoot多环境配置及配置文件分类

    文章插图
    通过这个结果可以得出file: config 下的配置文件优先于类路径下的配置文件 。
注意:
SpringBoot 2.5.0版本存在一个bug,我们在使用这个版本时,需要在 jar 所在位置的 config 目录下创建一个任意名称的文件夹

经验总结扩展阅读