SpringBoot配置文件
全局配置文件
SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件。支持properties后缀结尾的配置文件或者以yml/yaml后缀结尾的YAML的文件配置。
文件类型的优先级
文件类型:properties > yaml
在properties和yml/yaml配置文件同时存在的情况下, 在同一目录下,properties配置优先级 > YAML(YML)配置优先级
文件夹类型:./config/ > ./ > classpath:/config/ > classpath:/
- ./config/ (当前项目路径config目录下);
- ./ (当前项目路径下);
- classpath:/config/ (类路径config目录下);
- 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}")
就可以获取到值。
环境激活方式
环境激活方式一:
public class TestSpringBoot {
public static void main(String[] args) {
//设置激活环境,方法一
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.getEnvironment().setActiveProfiles("dev");
applicationContext.register(Config4Profile.class);
applicationContext.refresh();
System.out.println(applicationContext.getBean(Student.class));
}
}
环境激活方式二: 通过外部属性文件配置
spring.profiles.active=dev
环境激活方式三:运行时参数
-Dspring.profiles.active=dev