一、背景介绍
在实际开发过程中经常遇到需要读取工程目录下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文件的方法以及注意事项,实际开发中可以根据自己的需要选择合适的方式。