1 概念
SpringBoot支持并定义了配置文件的格式,也在另⼀个层面达到了规范其他框架集成到SpringBoot的目的
很多项目或者框架的配置信息也放在配置文件中,比如:
项目的启动端口
SpringBoot内置了Tomcat服务器, 默认端口号是8080。但是该端口号可能被占用,所以就需要程序员自定义端口号
数据库的连接信息(包含用户名和密码的设置)
第三方系统的调用密钥等信息
用于发现和定位问题的普通日志和异常日志等
2 配置文件的格式
Spring Boot 支持三种格式:properties、yml、yaml,但是只支持下面三种配置文件:
Spring Boot 配置文件有以下三种:
application.properties
application.yml
application.yaml
yml 为yaml的简写, 实际开发中出现频率最高,yaml 和yml 的使用方式⼀样。
当应用程序启动时, Spring Boot会自动从classpath路径找到并加载application.properties 和 application.yaml 或者 application.yml 文件
也可以通过spring.config.name指定文件路径和名称
3、properties 配置文件说明
properties 配置⽂件是最早期的配置⽂件格式,也是创建 SpringBoot 项目默认的配置文件
3.1 properties 基本语法
properties 是以键值的形式配置的,key 和 value 之间是以"="连接的,如:
# 配置项⽬端⼝号 server.port=8080 #配置数据库连接信息 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8& spring.datasource.username=root spring.datasource.password=root
3.2 读取配置文件
@Value 注解使用" ${} "的格式读取
mykey.key1 = bite #properties 配置 1 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("${mykey.key1}") private String key1; @RequestMapping("/key") public String key(){ return "读取到值:"+key1; } }
3.3 properties 缺点分析
是以 key-value 的形式配置的,会有很多冗杂的信息。yml格式则很好地避免了这个问题。
4、 yml 配置文件说明
4.1 yml 基本语法
yml 是树形结构的配置文件,它的基础语法是"key: value"。
key 和 value 之间使用英文冒号加空格的方式组成,空格不可省略
4.2 yml 的使用
1. 使用yml连接数据库
使用 @Value 来读取
# 使用yml连接数据库 spring: datasource: url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false username: root password: root
2. yml 配置不同数据类型及 null
使用 @Value 来读取
# 字符串 string.value: Hello # 布尔值,true或false boolean.value: true boolean.value1: false # 整数 int.value: 10 # 浮点数 float.value: 3.14159 # Null,~代表null null.value: ~ # "" 空字符串 #, 直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来 empty.value: ''
3. 配置对象
用 @ConfigurationProperties 来读取
# 第一种写法 student: id: 1 name: Java age: 18 # 第二种写法(行内写法) student: {id: 1,name: Java,age: 18} @RestController public class StudentController { @Autowired private Student student; @RequestMapping("/readStudent") public String readStudent(){ return student.toString(); } } @ConfigurationProperties(prefix = "student") @Component @Data public class Student { private int id; private String name; private int age; } student: id: 1 name: Java age: 18
4. 配置集合
用 @ConfigurationProperties 来读取
dbtypes: name: - mysql - sqlserver - db2 @Component @ConfigurationProperties("dbtypes") @Data public class ListConfig { private List<String> name; } @RestController public class ReadYml2 { @Autowired private ListConfig listConfig; @RequestMapping("/readList") public String readList(){ return listConfig.toString(); } }
5. 配置Map
用 @ConfigurationProperties 来读取
maptypes: map: k1: kk1 k2: kk2 k3: kk3 maptypes: {map: {k1: kk1,k2: kk2, k3: kk3}} @Component @ConfigurationProperties("maptypes") @Data public class MapConfig { private HashMap<String,String> map; } @RestController public class ReadYml2 { @Autowired private MapConfig mapConfig; @RequestMapping("/readMap") public String readStudent(){ return mapConfig.toString(); } }
4.3 关于单双引号
字符串默认不用加上单引号或者双引号
单引号会转义特殊字符,使其失去特殊功能, 始终是⼀个普通的字符串
双引号不会转义字符串里面的特殊字符, 特殊字符会表示本身的含义
4.4 yml 优缺点
优点
可读性高,写法简单, 易于理解
支持更多的数据类型, 可以简单表达对象, 数组,List,Map等数据形态
支持更多的编程语言, 不止是Java中可以使用,在Golang, Python, Ruby, JavaScript中也可以使用
缺点
不适合写复杂的配置文件
对格式有较强的要求(忘记空格检查会很麻烦)
0条评论
点击登录参与评论