Springboot中读取yml配置文件方式

一、yml文件规则

  • yml文件的好处,天然的树状结构,一目了然,实质上跟properties是差不多的
  • 不支持tab缩进,需要使用空格
  • 可以使用 “-小写字母” 或 “_小写字母” 来 代替 “大写字母”,如 userName 与 user-name ,user_name 含义是一样的
  • key: value 格式书写,key 后面跟着冒号,再后面跟着一个空格,然后是值

值的几种数据类型:

  • 普通的值(数字,字符串,布尔)
age: 18
name: mysgk
  • 对象、Map (属性和值) (键值对)
person:
    age: 18
    name: mysgk
  • 数组 (List、Set)
    用 - 值表示数组中的一个元素,如:
hands:
    - left
    - right

备注:

(1)字符串默认不用加上单引号或者双引号;
(2)""(双引号),不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思。(如:name: “zhangsan \n lisi” 输出:zhangsan 换行 lisi)
(3)’’(单引号),会转义特殊字符,特殊字符最终只是一个普通的字符串数据。(如:name: ‘zhangsan \n lisi’:输出:zhangsan \n lisi)

二、读取yml的方式

2.1 使用@Value

server:
  port: 8081

在代码中可以这样取值

@Value("${server.port}")
public String port;	

备注:此处的prot所在的类需要是一个组件,如果是实体类需要加上@Component

2.2 使用@ConfigurationProperties

如果需要一个 JavaBean 来专门映射配置的话,我们一般会使用@ConfigurationProperties来读取

student:
    age: 18
    name: mysgk

JavaBean

@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    
    

    private String name;

    private Integer 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;
    }

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

备注:使用@ConfigurationProperties,需要配置一个prefix (前缀) 参数, 即写上 key 就可以了

2.3 使用 @Environment

实际项目开发中并未使用到本方法

test:
    msg: aaa

代码:

@Autowired
private Environment env

@RequestMapping(value = "index2", method = RequestMethod.GET)
public String index2() {
    
    
    System.out.println(env.getProperty("test.msg"));
    return "The Way 2 : "+ env.getProperty("test.msg");
}

猜你喜欢

转载自blog.csdn.net/sinat_34241861/article/details/118894515