Spring Boot

yaml语法和属性绑定

2020-11-18  本文已影响0人  逆风g

SpringBoot使用一个全局的配置文件,文件名固定,二选一即可:

1. 基本语法

样例:

server:
     port: 8080
friends:
   lastName: zhangsan
   age: 20

或者friends: {lastName: zhangsan,age: 18}

pets:
  - cat
  - dog
  - pig

或者pets: [cat,dog,pig]

2. 属性绑定

yml文件内容:

person:
  name: zhangsan
  age: 20
  list: 
    - name: xiaobai
      age: 2
    - name: xiaohua
      age: 3

待绑定java对象:
核心@ConfigurationProperties(prefix = "person"),代表从yml文件中的person字段中拿数据。

//添加到容器中,以便@Autowired直接从容器中拿person对象
@Component
//从yml文件中绑定属性
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private List<HashMap> list;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", list=" + list +
                '}';
    }

    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 List<HashMap> getList() {
        return list;
    }

    public void setList(List<HashMap> list) {
        this.list = list;
    }
}

person对象打印结果为:
Person{name='zhangsan', age='22', list=[{age=13, name=xiaobai}, {age=11, name=xiaolizi}]}

3. 配置文件处理器

编写配置文件时会有提示。pom文件导入插件:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

4. @value

@value可以单独的为某个属性绑定配置文件得值,而@ConfigurationProperties为批量式绑定。

@Controller
public class HelloController {
    //属性绑定
    @Value("${person.name}")
    String personName;
    //SpEL
    @Value("#{23-3}")
    String age;
    @Autowired
    Person person;
    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        System.out.println(person);
        return personName+age;
    }
}

此处将会返回:张三20

上一篇下一篇

猜你喜欢

热点阅读