超全、超详的Spring Boot配置讲解笔记

springboot默认加载配置
SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改 。

  • Application.properties
  • application.yml
这两个配置文件使我们springboot启动的时候回默认加载的配置文件 。
配置文件放在src/main/resources目录或者类路径/config下,这个配置文件的路径是有优先级的,至于优先级后面再说 。
首先这两个文件中properties这个文件不需要多说使我们经常使用的资源文件,可是这个Yml是什么呢?后面再说
配置信息
SpringBoot不需要添加复杂的web.xml或者spring.xml等配置文件,spring只有一个配置文件,也非必须的 。
默认的配置文件是application.properties 。
#修改端口号server.port=8888#定义项目的访问目录server.context-path=/springboot我们使用IDEA需要注意,图就不截图太麻烦了:
如果properties文件中出现乱码,找到setting中,在file encoding中勾选Transparent native-to-asci conversion 。
YAML文件
除了默认的properties文件,SpringBoot还提供另外一种配置文件yml,这种文件提供一种更加简洁的方式编写配置信息 。
yml是YAML(YAML Ain‘t Markup Language)语言的文件,是一种标记语言,以数据为中心,比json、xml等更适合做配置文件,有想法的可以去网上搜搜资料学习下 。
参考语法规范:
官方参考: http://www.yaml.org
yml学习参考:https://www.yiibai.com/yaml/yaml_syntax_primitives.html
YAML基本语法:
  • 以键值对的方式表示属性 。(空格必须有) 。
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格 。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 。
  • 属性和值是大小写敏感的 。
例子:
server: port: 8081 servlet: context-path: springboot注意:【:后必须跟一个空格】,两种方式推荐使用yml方式配置项目 。
YAML语法
YAML支持的三种数据结构 。
  • 字面量:普通的值 。(数字,字符串,布尔)
  • 对象:键值对的集合 。(Map)
  • 数组:一组按次序排列的值 。(List,Set)
字面量
YAML中字面量属于普通的值 。以key: value来表示,value前必须带一个空格 。
字面量,字符串默认不需要单双引号 。
双引号:会转义字符,特殊字符会被转义 。(name: "SimpleWu lisi" //输出:SimpleWu换行 lisi)
单引号:不会转义字符,特殊字符不会被转义 。(name: 'SimpleWu lisi' //输出:SimpleWu lisi)
server: port: 8081对象、Map
在YAML中,对象和Map都是以键值对的方式表示 。在下一行来编写属性和值得关系,注意缩进 。
users: firstName: SimpleWu email: lovelyWu98k@gmail.com对象还有另一种写法,看到这种写法是不是想到了JSON?
users: { firstName: zhangsan, email: lovelyWu98k@gmail.com}数组
用-值得方式来表示数组中的一个元素 。
users: - SimpleWu - lovelyWu98k@gmail.com - addressisnot另外一种写法,还是像JSON
users: [SimpleWu,lovelyWu98k@gmail.com,addressisnot] 
将配置映射到实体类
【超全、超详的Spring Boot配置讲解笔记】springboot支持我们直接将properties或者yml中的属性映射到某个实体类,看例子 。
MySQL: url: jdbc:mysql:///springboot port: 3306 user: root pass: root假如在资源中我们现在有个mysql的链接信息,我们如何将它映射到实体类中去呢?
有两种方式:
  • @ConfigurationProperties指定从配置文件中读取属性,prefix指定对应yaml文件中的名称 。
  • @Value获取配置的属性值
 
@ConfigurationProperties
使用IDEA当我们添加了@ConfigurationProperties注解后,在页面上回出现一个错误提示,我们需要加入依赖 。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>编写JAVA类MySQLInfo.java
//java类@ConfigurationProperties(prefix = "mysql")@Componentpublic class MySQLInfo { private String url; private Integer port; private String user; private String pass; //省略getset}我们只需要指定prefix即可,他就会加载我们yml配置前置为mysql的属性 。
@Value
如果我们使用这个注解来获取属性使用方式是:
//java类@Componentpublic class MySQLInfo { @Value("${mysql.url}") private String url; @Value("${mysql.port}") private Integer port; @Value("${mysql.user}") private String user; @Value("${mysql.pass}") private String pass; //省略getset}


推荐阅读