SpringBoot的配置文件
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置。
SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件。

这三种文件存在优先级关系:.properties > .yaml > .yml (即 对同一种属性进行赋值时,springboot会优先加载.properties中的,等同于.properties文件中的值会覆盖前两者中的值)
我们可以在配置文件中自己定义服务器端口号和web应用的虚拟工程名,如:

在yml配置文件中的写法为:

springboot工程启动后,在控制台上我们可以看到如下日志,说明配置生效了:

application.yml配置文件
1. yml配置文件简介
YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数 据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导 入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简 洁。
YML文件的扩展名可以使用.yml或者.yaml。
2.yml配置文件的语法
配置普通数据
语法:
key: value
示例代码:
#普通数据的配置
name: zhangsan
注意:冒号之后有一个空格
配置对象数据
语法:
  key:
   key1: value1
   key2: value2
  或者:
  key: {key1:  value1,key2:  value2}
示例代码:
所有冒号后都要有一个空格
#对象数据的配置,一般使用缩进方式表示层级关系
person:
  name: zhangsan
  age: 18
  addr: beijing
#行内对象配置,上面对象的另一种写法,一般很少用
#person: {name: zhangsan,age: 18,addr: beijing}
注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别
配置Map数据 
同上面的对象写法
配置数组(List、Set)数据
语法:
  key:
   - value1
   - value2 
或者:
  key: [value1,value2]
示例代码:
city:  
    - beijing  
    - tianjin  
    - shanghai  
    - chongqing  
#或者
city: [beijing,tianjin,shanghai,chongqing]
 
#集合中的元素是对象形式 
student:  
    - name: zhangsan    
      age: 18    
      score: 100  
    - name: lisi    
      age: 28    
      score: 88  
    - name: wangwu    
      age: 38    
      score: 90
注意:value1与之间的 - 之间存在一个空格
配置文件与配置类的属性映射方式
1.使用注解@Value映
我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上
 例如:
application.properties配置如下:
person:
  name: zhangsan
  age: 18
  addr: beijing
注:第一个冒号前不用空格,之后的无所谓
或者,application.yml配置如下:
person:
  name: zhangsan
  age: 18
  addr: beijing
注:每个冒号后都要加空格
实体Bean代码如下:
@RestController public class Quick2Controller { @Value("${person.name}") //从配置文件中获取对应的key的value值,自动赋给下面变量 private String name; @Value("${person.age}") private String age; @Value("${person.addr}") private String addr; @RequestMapping("/quick2") public String quick2() { //获取配置文件的信息 return "name: " + name + " age: "+age +" addr: " + addr; } }
这里的@Value()也可以直接添值,如@Value("beijing")
浏览器访问结果为:

2.使用注解@ConfigurationProperties映射
通过注解@ConfigurationProperties(prefix="配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射
application.properties配置如下:
person.name=zhangsan
person.age=18
person.addr=beijing
注:只能写成这种形式,而不能key:value
或者,application.yml配置如下:
person:
  name: zhangsan
  age: 18
  addr: beijing
实体Bean代码如下:
@RestController @ConfigurationProperties(prefix = "person") public class Quick3Controller { private String name; private Integer age; private String addr;
//需要设定setter和getter方法 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 String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @RequestMapping("/quick3") public String quick2() { //获取配置文件的信息 return "name: " + name + " age: " + age + " addr: " + addr; } }
浏览器结果:

注意:使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方 法才可以,而使用@Value注解修饰的字段不需要提供set方法
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号