SpringBoot配置文件

全局配置文件

SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件。支持properties后缀结尾的配置文件或者以yml/yaml后缀结尾的YAML的文件配置。

文件类型的优先级

文件类型:properties > yaml

在properties和yml/yaml配置文件同时存在的情况下, 在同一目录下,properties配置优先级 > YAML(YML)配置优先级

文件夹类型:./config/ > ./ > classpath:/config/ > classpath:/

  1. ./config/ (当前项目路径config目录下);
  2. ./ (当前项目路径下);
  3. classpath:/config/ (类路径config目录下);
  4. classpath:/ (类路径config下).

举例子说明一下就是:

越来越多的都是打包成jar运行尤其是springboot项目,这时候配置文件如果一直放在项目中,每次进行简单的修改时总会有些不方便,这里我们看下打包成jar之后,从外部配置文件中读取配置信息. 四种方式可以把配置文件放到外部的。第一种是在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下; 第二种是直接把配置文件放到jar包的同级目录; 第三种在classpath下建一个config文件夹,然后把配置文件放进去; 第四种是在classpath下直接放配置文件。

这四种方式的优先级是从一到四一次降低的。

注: 一二两种方案其实不是jar包的同级目录,而是(执行启动指令的)同级目录。为了便于理解我把上面的当前目录说成jar包的同级目录,这种说法并不对。如果是刚开始接触或者调试这块,还是在jar包同级目录方便。

引用配置文件

有如下配置文件

application-dev.properties application-host.properties

则在 application.properties 文件中如下配置

spring.profiles.active=dev,host

通过如上引用不需要使用 @PropertySource外部属性注入 @Profile指定激活环境标注,只需要 @Value("${key}") 就可以获取到值。

环境激活方式

环境激活方式一:

  1. public class TestSpringBoot {
  2. public static void main(String[] args) {
  3. //设置激活环境,方法一
  4. AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
  5. applicationContext.getEnvironment().setActiveProfiles("dev");
  6. applicationContext.register(Config4Profile.class);
  7. applicationContext.refresh();
  8. System.out.println(applicationContext.getBean(Student.class));
  9. }
  10. }

环境激活方式二: 通过外部属性文件配置

  1. spring.profiles.active=dev

环境激活方式三:运行时参数

  1. -Dspring.profiles.active=dev