首先,咱们打开咱们的上一篇博客中建立的项目的resource文件夹中能够看到,在咱们的SpringBoot应用使用一个全局的配置文件,配置文件名是固定的:application.xxx。css
配置文件的做用:修改SpringBoot自动配置的默认值;由于大多数的配置SpringBoot在底层都给咱们自动配置好,因此咱们只须要在配置文件中根据应用的实际需求更改配置便可。java
例如:咱们在默认的配置文件application.properties进行以下配置:git
server.port=8081
server.servlet.context-path=/test
而后启动个人SpringBoot应用,在控制台中咱们就会发现,咱们启动的端口和访问路径都发生了改变:github
启动浏览器,在浏览器中输入:http://localhost:8081/test/hello,便可正常访问咱们的应用。web
在这里咱们须要重点说明的是,除了.properties格式的配置文件之外,SpringBoot还有一种.yml的配置文件格式,强烈推荐后者做为配置文件的格式。spring
在介绍yml以前呢,咱们先介绍一个概念:标记语言。也称为标志语言、标识语言、markup language)是一种将文本(Text)以及文本相关的其余信息结合起来,展示出关于文档结构和数据处理细节的计算机文字编码。与文本相关的其余信息(包括例如文本的结构和表示信息等)与原来的文本结合在一块儿,可是使用标记(markup)进行标识。当今普遍使用的标记语言是超文本标志语言(HyperText Markup Language,HTML)和可扩展标志语言(eXtensible Markup Language,XML) json
.yml的全称是:YAML,是”YAML Ain’t a Markup Language”的递归缩写,意思是:YAML不是一种标记语言。在开发的这种语言时,YAML 的意思实际上是:”Yet Another Markup Language”:YAML还是一种标记语言,但为了强调这种语言以数据作为中心,而不是以标记语言为重点,而用反向缩略语重命名 。浏览器
一句话:YAML以数据为中心,比json、xml等更适合作配置文件;springboot
举个简单的例子:ruby
YAML配置端口文件:
server:
port: 8081
XML配置端口文件:
<server>
<port>8081</port>
</server>
YAML使用可打印的Unicode字符,可以使用UTF-8或UTF-16。
使用空格为文件缩进来表示结构,只要是左对齐的一列数据,都是同一个层级的;不过不能使用跳格字符(TAB)。
例如:
server:
port: 8081
path: /hello
注解由井字号( # )开始,能够出如今一行中的任何位置,并且范围只有一行(也就是通常所谓的单行注解)
server: # 端口配置
port: 8081
每一个清单成员以单行表示,并用短杠和空格( - )起始。或使用方括号( [ ] ),并用逗号和空白( , )分开成员。
pets: # 每一个成员当行显示
‐ cat
‐ dog
‐ pig
pets: [cat,dog,pig] # 行内写法
每一个散列表的成员用冒号和空格( : )分开键值和内容。或使用大括号( { } ),并用逗号和空格( , )分开。
friends: # 每一个属性单行显示
lastName: zhangsan
age: 20
friends: {lastName: zhangsan,age: 18} # 行内写法
字符串日常并不使用引号,但必要的时候能够用双引号( “ )或单引号( ‘ )框住。
例如:name: “zhangsan \n lisi” 输出为: zhangsan 换行 lisi
区块的字符串用缩进和修饰符(非必要)来和其余数据分隔,有新行保留(preserve)(使用符号 | )或新行折叠(flod)(使用符号 > )两种方式。
data: >
Wrapped text
will be folded
into a single
paragraph
Blank lines denote # 空白行表明段落之间的间距
paragraph breaks
在单一文件中,可用连续三个连字号(—)区分多个文件。
--- # 电影清单 - Casablanca - North by Northwest - Notorious
重复的内容可以使从参考标记星号 ( * )复制到锚点标记( & )。
# 文件中重复的部分用这个方法处理:使用锚点(&)和引用(*)标签将"aa"散列表的内容复制到"bb"散列表
aa: &id001
city: East Centerville
state: KS
bb: *id001
指定格式可使用两个惊叹号( !! ),后面接上值。
a: 123 # 整数
b: "123" # 字符串
c: 123.0 # 浮点数
d: !!float 123 # 浮点数,使用!!表示为严格形态
e: !!str 123 # 字符串,使用严格形态
f: !!str Yes # 字符串,使用严格形态
项目结构图:
建立一个宠物类:Dog.java
package com.example.springboot02.controller.bean;
/** * @Author: REN * @Description: * @Date: Created in 0:31 2018/8/22 */
public class Dog {
private String name;
private Integer age;
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
建立主人类:Person.java
package com.example.springboot02.controller.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/** * @Author: REN * @Description: * @Date: Created in 0:25 2018/8/22 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Date birth;
private List<Object> list;
private Map<String,Object> maps;
private Dog dog;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", birth=" + birth +
", list=" + list +
", maps=" + maps +
", dog=" + dog +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
public Map<String, Object> getMaps() {
return maps;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
在pom.xml中导入以下依赖:
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在配置文件application.yml中进行以下编写:
server: port: 8081 person: name: ren age: 18 birth: 2018/08/22 maps: {k1: v1,k2: v2} list: - hi - hello dog: name: rack age: 2
建立PersonController类:
package com.example.springboot02.controller;
import com.example.springboot02.controller.bean.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/** * @Author: REN * @Description: * @Date: Created in 0:19 2018/8/22 */
@RestController
public class PersonController {
@Autowired
Person person;
@RequestMapping("/person")
public Person person() {
return person;
}
}
直接运行主函数,在浏览器输入:http://localhost:8081/person 便可看到内容已经成功的进行了注入:
这一节,咱们简单介绍了有关Spring Boot的配置文件信息。着重介绍了有关YAML文件的有关语法,以及如何经过配置文件将属性注入到javaBean中,这一节主要掌握如何经过YAML文件对Spring Boot项目属性配置便可。
参考文献:
尚硅谷,SpringBoot核心技术篇
转载说明: 支持转载,但请保留原做者,原文连接,微信公众号二维码