springboot项目读取配置文件内容的3种方法

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获取配置文件内容的几种方法,欢迎大佬批评指正,也欢迎大家一起来补充!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果在 SpringBoot 项目读取配置文件时出现乱码,可能是因为编码格式不正确或者文件本身存在编码问题。你可以尝试以下几方法来解决: 1. 在 `application.properties` 或 `application.yml` 中添加以下配置: ``` spring.http.encoding.force=true spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true ``` 这些配置将确保 Spring Boot 使用正确的编码格式来读取配置文件。 2. 确认配置文件的编码格式是否正确。可以使用 UTF-8 编码格式保存配置文件,并确保在读取文件时指定正确的编码格式。 ``` Properties properties = new Properties(); InputStream inputStream = getClass().getClassLoader().getResourceAsStream("application.properties"); try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8"); properties.load(inputStreamReader); } catch (IOException e) { e.printStackTrace(); } ``` 3. 如果以上方法都无法解决问题,可以尝试使用 `native2ascii` 工具将配置文件转换为 ASCII 码,并在读取文件时指定编码格式为 `ISO-8859-1`。 ``` Properties properties = new Properties(); InputStream inputStream = getClass().getClassLoader().getResourceAsStream("application.properties"); try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "ISO-8859-1"); properties.load(new StringReader(Native2AsciiUtils.ascii2Native(IOUtils.toString(inputStreamReader)))); } catch (IOException e) { e.printStackTrace(); } ``` 希望这些方法可以帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值