Java工程中读取resources目录下properties文件的几种方法

一、背景介绍

在实际开发过程中经常遇到需要读取工程目录下resources文件夹下配置文件的情况。本文主要介绍几种读取该目录下配置文件的方法,以便于在实际项目中可以灵活选用。本文主要介绍相对路径下的目录中配置文件的读取方法。现存在如下这样的工程目录:
这里写图片描述

二、具体读取方法
1、当需要读取当前路径下的properties文件时,即在本地没有部署到具体服务器上的情况:

File file = new File("src/main/resources/test.properties");
InputStream in = new FileInputStream(file);

2、当工程以war或者jar的形式部署到服务器后,在需要读取对应properties文件情况下,此时应该采取相对路径的读取方法。以下为采用流的方式进行读取。
这里写图片描述

从上图可知,当工程部署在服务器下时,配置文件以及代码都是在对应的classes文件夹下

InputStream in = this.getClass().getResourceAsStream("/test.properties");
Properties props = new Properties();
InputStreamReader inputStreamReader = new InputStreamReader(in, "UTF-8");
props.load(inputStreamReader);

采用此种流的方式进行读取后,通过props.getProperty(key)的方式获取配置文件中key所对应的value的值。

3、我们也可以采用注解的方式进行配置文件读取,在springboot工程中不需要在spring配置文件中做相应的配置,可以直接使用该注解获取配置文件中key值对应的value值。

@Value("${local.server.port}")// 注入端口号
private int port;

注意:当value出现中文时,会出现注入的值为乱码的现象。原因是在SpringBoot自动加载application.properties时默认采用unicode编码方式。解决办法如下所示:

@RestController
@RequestMapping(value = "/redis")
@PropertySource(value = {"classpath:application.properties"},encoding="utf-8") 
public class UserController extends BaseController{

    @Autowired
    IUserService userService;

    @Autowired
    IRedisService redisService;

    @Value("${amchine.ip}")
    private String ip;
    }

三、总结
本文主要介绍了几种读取工程resources目录下properties文件的方法以及注意事项,实际开发中可以根据自己的需要选择合适的方式。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕枫技术笔记

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值