Spring读取jar包外部的配置文件properties
2019独角兽企业重金招聘Python工程师标准>>>
文章图片
一 。 如何获取jar包外的文件?
新项目用jar包运行,直接需求就是读取jar外部的配置文件properties,做到不同的环境有不同的配置信息。
文章图片
用Spring管理的话
需要2点:
【Spring读取jar包外部的配置文件properties】1.file:协议
2.${user.dir} ,来自jdk的 System.getProperty("user.dir") ,会输出项目的本地路径
二。 如何文件流?
public static String getProperties(String keyWord) { InputStream is = PropertiesProvider.class.getClassLoader().getResourceAsStream("config/error.properties"); BufferedReader br = new BufferedReader(new InputStreamReader(is,Charset.forName("utf-8"))); Properties properties = new Properties(); try { properties.load(br); return properties.getProperty(keyWord); } catch (IOException e) { e.printStackTrace(); } return null; }
最合理的代码。推荐使用。如果用file 取读,会遇到jar包路径获取不到的问题。
三。如何获取文件路径?
当项目里需要读取配置文件,有相对路径和绝对路径之分。绝对路径存在无法迁移,适配性不高的问题,只讨论相对路径
java不会支持获取.java文件的路径,只能依靠根据.class文件获取相对路径
Producer.class.getResource("config/kafka.properties").getPath();
1.配置文件肯定需要统一管理, 通常在resource文件下
文章图片
2.配置pom.xml,让maven打包的时候加入resource目录
${basedir}/src/main/resources false
3.程序里
static { properties = new Properties(); String path = Producer.class.getResource("/config/kafka.properties").getPath(); try { FileInputStream fis = new FileInputStream(new File(path)); properties.load(fis); } catch (Exception e) { e.printStackTrace(); } }
getResource方法的逻辑,如果是斜杠 / 符号开头,就是根目录找,这里和pom.xml的配置对应。
转载于:https://my.oschina.net/u/2382040/blog/2050088
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 2018-07-09|2018-07-09 Spring 的DBCP,c3p0
- spring|spring boot项目启动websocket
- ExcelPackage读取写入
- Spring|Spring Boot 整合 Activiti6.0.0
- Spring集成|Spring集成 Mina
- springboot使用redis缓存
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了