在SpringBoot中读取yaml配置文件中的数据、全部数据、部分数据

yaml配置文件中的数据:

server:
  port: 8080

#字符串类型的数据
country: 博兴县


#两级
user1:
  name: zhangzhang
  age: 26

#对象数组
users:
  - name: zhangsan
    age: 18
  - name: lisi
    age: 20

#描述多个信息的数组
likes:
  - game
  - music
  - watching
  - sport

#使用${属性名}引用数据
baseDir: c:\windows
tempDir: ${baseDir}\temp
#tempDir: "${baseDir}\temp"  如果这个地方加了双引号的话,里面就出现了转义字符\t 制表符 就会在控制台上面输出,这个就是区别

#创建类,用于封装下面的数据
#由spring帮我们去加载数据到对象中,一定要告诉spring加载这组数据
#使用的时候从spring中直接获取信息使用
datasource:
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost:8080/springboot_db
  username: root
  password: admin

创建一个类,封装部分数据 

package com.company;

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

//1.定义数据模型封装yaml文件中对应的数据
//2.这个类要受Spring控制,定义为spring管控的bean
@Component
//3.指定加载的数据
@ConfigurationProperties(prefix="datasource")  //这个地方的prefix值要和配置文件中的属性名相同,才能完成指定加载数据的操作
public class MyDataSources {
    private String driver;
    private String url;
    private  String username;
    private  String password;

    @Override
    public String toString() {
        return "MyDataSources{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

测试输出类: 

package com.company.controller;

import com.company.MyDataSources;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/books")
public class BooksController {

//    读取yaml数据中的单一数据
    @Value("${country}")   //Spring中为了注入基本数据类型以及字符串的格式
    private String country;   //这个属性名,不用和yaml文件中的属性名一致

//    读取两级数据
    @Value("${user1.name}")
    private  String userName;

//    读取数组中的数据
    @Value("${likes[0]}")   //这里采用数组的形式,下标是从0开始的
    private  String like1;

//    读取对象数组中的数据
    @Value("${users[1].age}")
    private  String userAge;

//    #使用${属性名}引用数据
    @Value("${tempDir}")
    private String tempDir;

//    封装全数据  将所有的数据封装到一个对象里面
    @Autowired //自动装配注解
    private Environment env;

//  封装部分数据
    @Autowired
    private MyDataSources myDataSources;

    @GetMapping
    public String getById(){
        System.out.println("springboot is running");

        System.out.println("country----->"+country);

        System.out.println("userName----->"+userName);

        System.out.println("like1------->"+like1);

        System.out.println("userAge------>"+userAge);

        System.out.println("tempDir------>"+tempDir);
        System.out.println("**************************");

        //提取数据的时候使用getProperty
        System.out.println(env.getProperty("users[1].age"));
        System.out.println(env.getProperty("tempDir"));

//        输出封装的部分数据
        System.out.println("*******************************");
        System.out.println(myDataSources);
        return "springboot is running";
    }
}

输出结果:

在SpringBoot中读取yaml配置文件中的数据、全部数据、部分数据_第1张图片

你可能感兴趣的:(springboot,spring,boot)