springboot 获取配置文件数据

读取配置内容

  1. @Vlaue
  2. Enviroment
  3. @ConfigurationProperties

application.yml文件

name: zhangyy

# map(对象)
person1:
  name1: ${name}
  age1: 31

# map(对象)行内写法
person2: {name2: yyzhang1,age2: 32}

# 数组
address1:
  - chengdu
  - shanghai

# 数组行内写法
address2: [beijing,shenzheng]


# 纯量:单个的、不可再分的值
msg1: 'hello \n world'  #单引忽略转义字符
msg2: "hello \n world"  #双引识别转义字符


Value
Controller

package com.yy.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Value("${name}")
    private String name;

    @Value("${person1.name1}")
    private String name1;

    @Value("${person1.age1}")
    private int age1;

    @Value("${person2.name2}")
    private String name2;

    @Value("${person2.age2}")
    private int age2;


    @Value("${address1[0]}")
    private String address10;

    @Value("${address1[1]}")
    private String address11;

    @Value("${address2[0]}")
    private String address20;

    @Value("${address2[1]}")
    private String address21;

    @Value("${msg1}")
    private String msg1;

    @Value("${msg2}")
    private String msg2;


    @RequestMapping("/hello")
    public String hello(){
        System.out.println(name);
        System.out.println(name1);
        System.out.println(name2);
        System.out.println(age1);
        System.out.println(age2);
        System.out.println(address10);
        System.out.println(address11);
        System.out.println(address20);
        System.out.println(address21);
        System.out.println(msg1);
        System.out.println(msg2);


        return "hello Spring Boot 2";
    }
}

输出

zhangyy
zhangyy
yyzhang1
31
32
chengdu
shanghai
beijing
shenzheng
hello \n world
hello 
 world

Enviroment
Controller

package com.yy.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @Autowired
    private Environment env;

    @RequestMapping("/hello")
    public String hello(){
        System.out.println(env.getProperty("person1.name"));
        System.out.println(env.getProperty("address1[0]"));


        return "hello Spring Boot 2";
    }
}

输出

zhangyy
chengdu

ConfigurationProperties
定义一个Person2类

package com.yy.controller.domain;

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

@Component
//表示此类被Spring识别,是一个bean类
@ConfigurationProperties(prefix = "person2")
//表示去yml中取值,且取前缀为person2对应的属性值
public class Person2 {
    private String name2;
    private String age2;

    public String getName2() {
        return name2;
    }

    public void setName2(String name2) {
        this.name2 = name2;
    }

    public String getAge2() {
        return age2;
    }

    public void setAge2(String age2) {
        this.age2 = age2;
    }

    @Override
    public String toString() {
        return "Person2{" +
                "name2='" + name2 + '\'' +
                ", age2='" + age2 + '\'' +
                '}';
    }
}

Controller

package com.yy.controller;

import com.yy.controller.domain.Person2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @Autowired
    private Person2 person2;



    @RequestMapping("/hello")
    public String hello(){
        System.out.println(person2.toString());
        return "hello Spring Boot 2";
    }
}

输出

Person2{name2='yyzhang1', age2='32'}

Guess you like

Origin blog.csdn.net/u012700515/article/details/121069986