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;
privateString username;
privateString 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}")
privateString userName;
//读取数组中的数据
@Value("${likes[0]}")//这里采用数组的形式,下标是从0开始的
privateString like1;
//读取对象数组中的数据
@Value("${users[1].age}")
privateString 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|在SpringBoot中读取yaml配置文件中的数据、全部数据、部分数据】
推荐阅读
- #|post传参的方式及接收参数的方法
- #|项目登录页面框架
- Nacos|二、SpringCloud框架搭建之Nacos配置中心
- Spring|Spring-IOC配置-依赖注入
- Java|霸占GitHub热榜的《Spring Cloud Alibaba源码笔记》果然“威力极大”
- JAVA后端面试|java 8 stream API
- java|使用maven创建web项目
- 程序人生|Mall电商实战项目开源,附源码、教程合集
- springboot|企业微信通过群聊机器人用springboot发送信息