SpringBoot配置加载,各配置文件优先级对比
1.SpringBoot配置文件
SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件。支持properties后缀结尾的配置文件或者以yml/yaml后缀结尾的YAML的文件配置。
以设置应用端口为例:
properties文件示例(application.properties): server.port=80 YAML文件示例(application.yml): server: port: 80
两者同时存在情况
假如各配置文件都配置了不同的端口,那么SpringBoot会使用哪一个端口呢?带着疑问试验一下实例
在resources目录下创建两个配置文件,一个为application.yml配置文件,设置端口为8090,另一个为application.properties配置文件,设置端口为8070;
8070被启动说明如果两个配置文件同时存在,application.properties优先级高于application.yml。
2.配置文件目录
SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。
可放置目录(优先级从高到低)
- file:./config/ (当前项目路径config目录下);
- file:./ (当前项目路径下);
- classpath:/config/ (类路径config目录下);
- classpath:/ (类路径config下).
- 一般在resources目录下创建的即为classpath目录
-
3
- 在resources/目录下配置文件设置端口为8888;
- 在resources/config目录下配置文件设置端口为9999;
- 在项目路径下配置文件设置端口为6666;
- 在项目路径config目录下配置文件设置端口为7777;最后运行结果端口7777被打开
@ConfigurationProperties与@Value两种注解对比
比较项 @ConfigurationProperties @Value 全量注入 支持 否 松散绑定(Relaxed binding) 支持 否 SpEL 否 支持 JSR303 支持 不支持 **松散绑定:**驼峰命名(userName)、横干拼接(user-name)、下划线(user_name)之间可以互相识别绑定称为做松散绑定 **JSR303:**通过@Email,@Nullable,@Digits 等等注解进行邮箱、判空、数字格式等等数据的校验,更多相关内容请参考IBM的中文文档:https://www.ibm.com/developerworks/cn/java/j-lo-jsr303/index.html @ConfigurationProperties通常用于将配置全量注入某个类中; @Value通常用于注入某一些特定配置值中;
春有百花秋有月,夏有凉风冬有雪!