yml配置文件与注入的三种方式

308 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

SpringBoot配置

YAML

基础

对比

  • properties:
server.port=8000
server.address=127.0.0.1
  • xml:
<server>
  <port>8080</port>
  <address>127.0.0.1</address>
</server>
  • yml:
server:
  port: 8080
  address: 127.0.0.1

 可以看出,xml对比properties是层级分明,yml的优势是简洁,以数据为核心。

注意:1)冒号后面要带一个空格,否则数据不会被识别到(有数据的地方必须有空格,没有数据的,比如server后面就无所谓了);2)另外yml使用缩进表示层级关系,缩进时不允许使用Tab键,只能用空格,因为不同操作系统对Tab对应的空格数目可能不同,会导致层次混乱,但是我们使用idea的话就不必担心这个问题了;3)缩进的空格数目并不重要,只要相同层级的元素左对齐了,那么他们就是同一层级的元素。

数据格式

  • 对象(map):键值对的集合
person:
  name: jinzunyue
# 行内写法
person: {name: jinzunyue}

注意:“person:”后面要加空格,“name:”后面也需要加空格。

  • 数组:一组按照次序排列的值
address:
  - jin
  - zun
# 行内写法
address: [jin,zun]
  • 纯量:单个的,不可分割的值
s1: 'hello \n world'
s2: "hello \n world"

注意:单引号忽略转义字符,双引号识别转义字符,也就是说,前者输出hello \n world,后者则换行。

参数引用

name: jinzunyue

person:
  name: ${name}

 引用上面已经定义过的name的值

读取配置文件内容

方法一:@Value()

方法二:Environment注入

 首先使用@Autowired注解在springboot程序运行时将Enviroment对象加载到spring容器中,然后就可以直接注入了。相对于@Value方法,该方法的优势在于只需要注入一次,后面只需要调用方法提取配置文件中的值即可,而@Value提取每个值都需要写一遍@Value();当然,在值比较少的情况下还是推荐使用@Value,就不用再调用方法了。

方法三:@ConfigurationProperties

  • 如果不添加前缀,那么不会识别到person下面的name和age。
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private int age;
​
    private String[] address;
​
    public String[] getAddress() {
        return address;
    }
​
    public void setAddress(String[] address) {
        this.address = address;
    }
​
    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;
    }
​
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }
}

  • 添加前缀后再进行输出就可以了。

1)@Component注解意思是,Person被spring识别为一个bean;2)@Autowired相当于创建了一个Person对象;

tips:如何解决红色的辐条

 跟随指引,点击文档,将依赖添加进pom文档中,加入这个依赖后再次编写配置文件就会有提示了,没错,这个依赖就只起到提示作用。