【Spring】_SpringBoot配置文件
目录
1.Spring Boot配置文件
1.1 Spring Boot 的配置文件类型及命名
1.2 properties和yml的优先级
2. properties配置文件
1.1 properties语法格式
1.2 自定义配置及配置文件的读取
1.3 properties的缺点
3. yml配置文件
3.1 yml语法格式
3.2 自定义配置及配置文件的读取
3.4 yml配置文件
4. 更多配置示例:banner
配置文件最重要的目的是解决硬编码问题;
1.Spring Boot配置文件
1.1 Spring Boot 的配置文件类型及命名
1、Spring Boot配置文件有以下三种:
(1)application.properties;
(2)application.yaml;
(3)application.yml;(yml是yaml的缩写)
2、配置文件的命名必须如上所示,不能随便更改application,否则会无法识别:
(1)正确命名:
(2)错误命名:以properties文件为例,将application修改为applications:
1.2 properties和yml的优先级
现在application.properties中设置项目端口为9090:
在application.yml中设置端口为9091:
启动程序,查看启动日志:
现注释掉properties文件的端口设置语句,重新启动项目,启动日志如下:
关于配置文件的优先级总结如下:
1、当.properties和.yml共存在一个项目中时,二者都会被加载。但当二者配置有冲突时,.properties的优先级更高;
2、通常在一个项目中仅保留两个配置文件之一即可;
2. properties配置文件
properties文件是Spring Boot项目创建的默认配置文件。
1.1 properties语法格式
properties配置文件以key-value形式组织,key与value用=连接;
建议key使用小写,单词与单词之间使用.进行分割;
以配置项目端口号和配置数据库连接为例:
# 配置项目端口号
server.port=9090
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
注意使用的是spring的@value,不是lombok的@value:
1.2 自定义配置及配置文件的读取
若需在项目中主动读取配置文件,可以使用@Value注解实现,使以"${ }"格式读取,示例如下:
现在application.properties中新增配置项,令其key为demo.key:
# åºç¨æå¡ WEB 访é®ç«¯å£
server.port=8080
# 自定义配置
demo.key=hello,properties
在Controller包下创建一个propertiesController类:
package com.example.iocdemo1.Controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PropertiesController {
@Value("${demo.key}")
private String key1;
@RequestMapping("/readKey")
public String readKey(){
return "Configuration item has read: key1 = "+key1;
}
}
启动程序,通过Chrome进行访问:
可见配置文件成功读取;
1.3 properties的缺点
以连接数据库为例:
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&
spring.datasource.username=root
spring.datasource.password=root
可见properties中存在一定冗余,如spring.datasource重复写;
3. yml配置文件
3.1 yml语法格式
yml是树形配置文件,其基础语法格式为“key: value”,冒号后有一个空格不可省略,以配置项目端口号和配置数据库连接为例:
# 配置项目端口号
server:
port: 9091
# 配置数据库连接
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
username: root
password: root
注:1、逐层换行表示一种层次,idea会帮助换行,对于server、spring等必须顶格,否则会报错;
2、key与value之间的冒号后必须有一个空格,否则会报错;
yml文件中的颜色变化也可帮助检查:
3.2 自定义配置及配置文件的读取
若需在项目中主动读取配置文件,可以使用@Value注解实现,使以"${ }"格式读取,示例如下:
现在application.yml中新增配置项,令其key为demo.key1:
demo:
key1: hello,yml
在Controller包下创建一个ymlController类:
package com.example.iocdemo1.Controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ymlController {
@Value("${demo.key1}")
private String key1;
@RequestMapping("/readYml")
public String redKey1(){
return "Configuration item has read: key1 = "+key1;
}
}
启动程序,使用Chrome进行访问:
可见配置文件成功读取;
注:在yml配置的文件使用${ }进行读取时,需将配置文件中的冒号与空格更换为. ;
3.4 yml配置文件
优点:
1、可读性高,写法简单,易于理解;
2、支持更多数据类型,可简单表达对象,数组,List,Map等数据形态;
(本部分将在下一篇文章进行介绍)
3、支持更多编程语言,不仅在java中,在golang、python等中都可以使用;
缺点:
1、不适合写复杂的配置文件,当配置文件非常复杂时会造成可读性较差;
2、对格式有较强要求,尤其是空格很容易造成难以查找和纠正的错误;
4. 更多配置示例:banner
Spring官网提供的更多配置见链接:Common Application Properties :: Spring Boot
Spring默认启动日志设计的banner图形为spring:
现使用yml配置文件,以修改spring默认启动输出的banner图形为例,将其修改为Hello World。
第一步:查找官网banner的配置:
第二步:创建banner.txt文件:
可使用一些在线小工具生成Hello World图案,复制到banner.txt中:
第三步:在yml中新增banner.txt配置如下:
# 配置项目端口号
server:
port: 9091
# 配置数据库连接
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
username: root
password: root
banner:
location: banner.txt
第四步:重启程序,查看日志: