SpringBoot支持properties和yml两种配置方式,两种格式的功能类似,都可以完成项目的配置信息。但是properties的优先级要高于yml,而yml文件采用树状结构,直观上更加一目了然。
在使用Spring Initializr创建项目时,会自动生成一个application.properties文件,在添加配置信息时,每行的格式如下:
属性键=属性值
称之为配置项。例如:
server.port=8080
application.properties文件的配置项可以通过注解@Value注入
SpringBoot中支持两种方式读取配置项
SpEL表达式:@Value("#{configProperties[‘key’]}")
例如:
@Value("#{configProperties['server.port']}")
private int port;
占位符:@Value("${key}")
例如:
@Value("${server.port}")
private int port;
通常情况下,缺少配置项信息会导致程序异常,当配置文件中缺少属性值时,可以在属性键后添加冒号(:)和默认值。
例如:
@Value("${server.port:8080}")
private int port;
根据实际需要可以自定义属性值,配置文件支持多种格式
server.port=8080
server.register=true
app.message=你好\
有什么可以帮助吗
app.number=20,30
@Value("${app.number}")
int[] numbers;
列表和集合一样,如果属性的值包含重复项时,则只会将一个元素添加到集合
@Value("${app.number}")
List<Integer> numbers;
app.number=20;30;40
@Value("#{'${app.number}'.split(';')}")
List<Integer> numbers;
app.number-map={KEY1:1,KEY2:2,KEY3:3}
@Value("#{${app.number-map}}")
Map<String, Integer> numberMap;
app.java-home=Java path:${JAVA_HOME}
#端口
server.port=8080
yaml语言是一种通用的数据串行化格式,基本语法规则如下:
app.name: 张三
-A
-B
-C
也可以采用行内表示法
car: [audi,bmw]
animal:
-cat
-pig
car:
bmw: 720
audi: A8
number: 30
isFlag: true
在resources目录下创建多个配置文件,application.yml、application-dev.yml、application-prod.yml。分别在dev和prod配置文件中配置开发和生产环境的配置信息,只需要在application.yml文件中配置如下:
spring:
profiles:
active: dev
即可实现不同环境的切换
SpringBoot中有bootstrap和application两种配置文件,区别如下: