当使⽤Spring Initializr构建springboot项⽬时,会⾃动在src/main/resources下⽣产application.properties⽂件。今天我们就来聊聊SpringBoot的配置⽂件。配置⽂件的作⽤
SpringBoot采⽤“习惯优于配置”的理念,项⽬中存在⼤量的配置,采⽤默认配置,让你⽆需⼿动配置。
SpringBoot能够识别properties格式与yml格式的配置⽂件(我们⼀般使⽤yml格式更多)。当需要对默认配置进⾏修改或者⾃定义配置时可⽤通过修改配置⽂件达到⽬的。
配置⽂件的基本使⽤
这是使⽤yml格式的配置举例,说明application.yml中如何配置,以及代码中如何获取。数字,字符串,布尔获取配置⽂件写法:version: 1.0
author: codhome.vipflag: true
使⽤@Value获取:@Value(\"${version}\")float version;
@Value(\"${author}\")String author;
//这⾥的true为默认值@Value(\"${flag:true}\")boolean flag;
对象、Map写法与获取配置⽂件写法:user:
userName: codehome age: 18
forbidden: true
使⽤@ConfigurationProperties获取:@Configuration
@ConfigurationProperties(prefix = \"user\")@Data
public class UserProperties { String userName; int age;
boolean forbidden;}
//注⼊使⽤@Autowired
UserProperties userProperties;List、Set、Array获取配置⽂件写法:random: 10,20,30使⽤@Value获取:
@Value(\"#{'${random}'.split(',')}\")int[] randoms; //List - zhangsao - lisi - wangwu 使⽤@ConfigurationProperties获取:@Configuration @ConfigurationProperties(prefix = \"random1\")@Data public class UserProperties { List 总结下两种注解区别多环境配置 我们在主配置⽂件编写的时候,⽂件名可以是 application-{profile}.properties/yml,使⽤spring.profiles.active激活使⽤哪⼀个配置⽂件spring: profiles: active: dev---#配置开发环境spring: profiles: devserver: port: 9000---#配置⽣产环境spring: profiles: prodserver: port: 9100 ---#配置测试环境spring: profiles: devserver: port: 8000配置⽂件优先级项⽬内部配置⽂件 application.properties 与application.yml同⼀个⽬录共存时,properties配置优先级更⾼ConfigFileApplicationListener中默认配置⽂件加载顺序 项⽬根⽬录config⽂件夹>根⽬录配置⽂件>resources下cofnig⽂件夹>resources下配置⽂件当多个配置⽂件属性不冲突时,配置是互补的也可以指定配置⽂件地址 java -jar run-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties外部配置 操作系统环境变量(⽐如操作系统的username) RandomValuePropertySource配置的random.*属性值jar包外部的application-{profile}.properties配置⽂件jar包内部的application-{profile}.properties配置⽂件 jar包外部的application.properties配置⽂件(此级别在测试环境经常使⽤。⽐如就在jar包同级⽬录放置⼀个配置⽂件,就内覆盖jar包内部所有的配置⽂件了)jar包内部的application.properties配置⽂件,由jar包外向jar包内进⾏寻找,优先加载待profile的,再加载不带profile的。@Configuration注解类上的@PropertySource(⼿动指定导⼊外部配置⽂件) 通过SpringApplication.setDefaultProperties指定的默认属性,⾃⼰程序代码⾥设置,优先级最低 千⾥之⾏,始于⾜下。这⾥是SpringBoot教程系列第五篇,所有项⽬源码均可以在我的上⾯下载源码。 因篇幅问题不能全部显示,请点此查看更多更全内容