4springboot的配置文件及yml使用

配置文件
作用:spring boot 自动配置(约定,8080 ).可以使用配置文件 对默认的配置 进行修改

application.properties的修改方式:

yml修改方式:

把默认端口8080修改为8888,访问成功:

默认全局配置文件:
  application.properties : key=value
  application.yml : yaml ain't myarkup language ,不是一个标记文档   行内写法(k: v、[Set/List/数组] 、{map,对象类型的属性},并且 []可省,{}不能省
  注意:1. key:空格value 

   2.通过垂直对齐 指定层次关系

   3.value默认可以不写引号; ""会将其中的转义符进行转义,其他不会

  server:
    port: 8882
    path: /a/b/c

  xml:是一个标记文档
  <server>

    <port>8882</port>
    <path>/a/b/c</path>
  </server>

 yml除了可以配置之外,还可以属性绑定:

例:创建一个实体类对象,并且绑定属性

package com.helloworld.entity;

import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component  //把实体类加入ioc容器
@ConfigurationProperties(prefix = "student") //属性绑定声明  这里的student对应yml那边的student
public class Student {
    private String name;
    private int age;
    private boolean sex;
    private Date birthday;
//    {province:广东,city:广州,zone:增城区}
    private Map<String,Object> location;
    private String[] hobbies;
    private List<String> skills;
    private Pet pet;//宠物
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public boolean isSex() {
        return sex;
    }
    public void setSex(boolean sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public Map<String, Object> getLocation() {
        return location;
    }
    public void setLocation(Map<String, Object> location) {
        this.location = location;
    }
    public String[] getHobbies() {
        return hobbies;
    }
    public void setHobbies(String[] hobbies) {
        this.hobbies = hobbies;
    }
    public List<String> getSkills() {
        return skills;
    }
    public void setSkills(List<String> skills) {
        this.skills = skills;
    }
    public Pet getPet() {
        return pet;
    }
    public void setPet(Pet pet) {
        this.pet = pet;
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + ", sex=" + sex + ", birthday=" + birthday + ", location="
                + location + ", hobbies=" + Arrays.toString(hobbies) + ", skills=" + skills + ", pet=" + pet + "]";
    }
    
}

然后在yml配置文件注入值:

student:
  name: zs
  age: 23
  sex: true
  birthday: 2019/02/12
  #location是map集合输入格式有两种
  #1.{k:空格v}     行内写法
  #2.通过垂直表示层次关系   例如:location:
                            #province: 广东
                            #city: 广州
  location: {province: 广东,city: 广州,zone: 增城区} #map集合  行内写法
  
  #数组和list\set输入格式一样 -空格value 或者  [足球,篮球] 中括号可以省略 行内写法
  hobbies: 足球,篮球   #数组
    #- 篮球
    #- 足球
    
  skills:   #list集合
    - 编程
    - 金融
  pet:  #对象类型通过垂直对齐   k:空格v  或者 pet:{name: wc11,strain: hsq} 行内写法
    name: wc
    strain: hsq

数据绑定后,在测试类里面装配一个学生对象测试:

 yml里面的属性确实打印出来的,测试成功。

总结:

application.properties配置方式 : key=value

application.yml配置方式:

   1. key:空格value   简单属性配置

   2.通过垂直对齐 指定层次关系

   3.value默认可以不写引号; ""会将其中的转义符进行转义,其他不会

数据类型yml配置方式:

  1、简单数据   k:空格v

  2、list/set/数组

    2.1 行内写法:   hobbies: [足球,篮球]      中括号可省略

    2.2 垂直方式:hobbies:

            - 足球

            - 篮球

  3、对象/map

    3.1 location :{province: 广东,city: 广州,zone: 增城区}  行内写法  注意v前面有空格

    3.2 location :  

        province: 广东
        city: 广州            通过垂直对齐表示层次关系

猜你喜欢

转载自www.cnblogs.com/unlasting/p/12312854.html
今日推荐