springboot项目读取配置文件的方法
以yml配置文件为例,演示在项目中获取配置文件中的数据的方法,配置文件内容如下:
author: 刚开始入门的小白
springboot:
name: demo01
package: 3
user:
name: zhangsan
age: 20
gender: man
likes:
- game
- basketball
- music
- read
database:
book:
name: 《钢铁是怎样炼成的》
price: ¥45
author: 尼古拉·阿列克谢耶维奇·奥斯特洛夫斯基
ISBN: 12345
1、读取单一数据
单一数据获取比较简单。
单层数据
@RestController
@RequestMapping("/users")
public class UserController {
@Value("${author}") //在这里添加上配置文件中要获取的数据,注意:必须要和配置文件中的数据名称一致
private String result; //这里变量名可以任取
@GetMapping
public String getUserById(){
System.out.println("读取到的数据为:"+result); //查看获取到的内容
return "读取到的数据为:"+result;
}
}
结果:
访问结果:
控制台输出:
多层数据
多层数据读取也很简单,比如如果我想获取springboot的name数据,那么可以按照以下来读取:
@Value("${springboot.name}")
private String result;
其他代码与上面一致,这里不再重复给出,得到的结果:
注意:
由于springboot会优先加载系统环境变量,从而如果读取user.name的值就会读到计算机的用户名,因此,应该尽量避免在配置文件中使用这一属性。
读取数组
读取方法:(读取user下的likes中的第二个数据,如果有多层,以此类推)
@Value("${user.likes[1]}")
private String result;
结果
2、读取全部数据
这种方法可以将配置文件的全部数据读出来。
@Autowired
private Environment result; //将数据封装到这一个对象
@GetMapping
public String getUserById(){
System.out.println("读取到的数据为:"+result.getProperty("database.book.name")); //使用getProperty方法读取,填写的参数与上述方法一致
return "读取到的数据为:"+result.getProperty("database.book.name");
}
结果
3、读取配置文件局部某一部分数据(重要)
先新建一个类,用来作为保存数据的对象:
@Component
@ConfigurationProperties(prefix = "database") //这里是要获取的局部的属性名,比如,我这里要获取database下的数据
@Data
public class DataSource {
//这里是配置文件中,database下自己要获取的属性,这个变量名必须和配置文件保持一致
private String price;
private String author;
private String ISBN;
}
获取上面局部全部属性:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private DataSource dataSource;
@GetMapping
public String getUserById(){
System.out.println("读取到的数据为:"+dataSource);
return "读取到的数据为:"+dataSource;
}
}
结果
获取某一个值:
@GetMapping
public String getUserById(){
System.out.println("读取到的数据为:"+dataSource.getAuthor());
return "读取到的数据为:"+dataSource.getAuthor();
}
结果
好了,这就是springboot获取配置文件内容的几种方法,欢迎大佬批评指正,也欢迎大家一起来补充!!