Java开发中,经常需要在maven工程中读取src/main/resources下的配置文件:

思路如下:

  1. Class.getClassLoader() 返回类加载器ClassLoader,进而可以获取到classpath路径下的资源
  2. ClassLoader.getSystemResourceAsStream() 返回读取指定资源的输入流InputStream
  3. Properties.load(InputStream inStream) 从输入流InputStream中读取属性列表(键和元素对)

// 步骤1:返回类加载器
ClassLoader classLoader = Test.class.getClassLoader(); // 下面3行代码表示通过ClassLoader可以获取到classpath路径
URL resource = classLoader.getResource("test.xml");
String path = resource.getPath();
System.out.println(path); // 步骤2:返回读取指定资源的输入流
InputStream resourceAsStream = classLoader.getResourceAsStream("test.xml"); // 步骤3:从输入流读取属性
Properties properties = new Properties();
properties.load(resourceAsStream);

附:配置文件读取工具类

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class PropertiesUtil { private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);
private static Map<String, PropertiesUtil> propsMap;
Properties properties; public static synchronized PropertiesUtil getInstance(String propName) {
PropertiesUtil instance = null;
if (propsMap == null) {
propsMap = new HashMap<String, PropertiesUtil>();
}
instance = propsMap.get(propName);
if (instance == null) {
instance = new PropertiesUtil(propName);
propsMap.put(propName, instance);
}
return instance;
} private PropertiesUtil(String propName) {
ClassLoader classLoader = PropertiesUtil.class.getClassLoader();
InputStream inStream = classLoader.getResourceAsStream(propName);
properties = new Properties();
try {
properties.load(inStream);
} catch (IOException e) {
throw new RuntimeException("There's no resource file named [" + propName + "]", e);
}
} public String getProperty(String key) {
return properties.getProperty(key);
} public String getProperty(String key, String defaultValue) {
return properties.getProperty(key, defaultValue);
} public int getInt(String key) {
return Integer.valueOf(getProperty(key));
} public int getInt(String key, int defaultValue) {
return getProperty(key) == null ? defaultValue : Integer.valueOf(getProperty(key));
} public long getLong(String key) {
return Long.valueOf(getProperty(key));
} public long getLong(String key, long defaultValue) {
return getProperty(key) == null ? defaultValue : Long.valueOf(getProperty(key));
} public boolean getBoolean(String key) {
return Boolean.parseBoolean(getProperty(key));
} public boolean getBoolean(String key, boolean defaultValue) {
return getProperty(key) == null ? defaultValue : Boolean.parseBoolean(getProperty(key));
} public Properties getProperties() {
return properties;
} public static void main(String[] args) {
PropertiesUtil pUtil = PropertiesUtil.getInstance("otter.properties");
String reString = pUtil.getProperty("otter.cache.zkhost");
logger.info(reString);
}
}

Java读取Maven工程下的配置文件,工具类的更多相关文章

  1. java读取resource目录下的配置文件

    java读取resource目录下的配置文件 1:配置resource目录 下的文件 host: 127.0.0.1 port: 9300 2:读取    / 代表resource目录 InputSt ...

  2. Java语言Lang包下常用的工具类介绍_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数.你可知道,有很多现成的工具类可用,并且代码质量都 ...

  3. Java读取maven目录下的*.properties配置文件

    public class ReadProperties{ private static String proFileName = "/config/MQSubjectId.propertie ...

  4. java读取写入oracle的blob字段工具类

    import com.hzunitech.fxgk.sys.model.UtFileData;import com.jfinal.kit.PathKit;import com.jfinal.plugi ...

  5. Java读取properties配置文件工具类

    1.   PropertyUtils.java package javax.utils; import java.io.InputStream; import java.util.Properties ...

  6. Maven工程下报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    Maven工程下,webapp下面新建index.jsp文件,报如下错误. 原因很简单,没有安装如下maven依赖包: <dependencies> <!-- JSP相关 --> ...

  7. Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用

    Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单 ...

  8. Maven 工程下 Spring MVC 站点配置 (一)

    最近,查找一些具体资料时,虽然会有很多,但是系统的却很少,尤其是对maven 下 spring mvc 站点搭建的配置,总是说的很多但让新手一目了然的步骤却少之又少. 对此闲暇时整理了一下,做了一套较 ...

  9. Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作

    详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...

随机推荐

  1. Ansible Ad-Hoc命令

    -a:传入模块的参数,不同的模块要传入的参数不同 -B SECOND:当任务放到后台执行异步任务,设置程序运行的超时时间,传入的是一个数值,单位秒 -C:测试该任务能否正常运行,不对被管理主机做出任何 ...

  2. Java动态绑定与静态绑定

    Java动态绑定来自于继承体现,子类继承父类,子类重新覆盖了父类的方法,就是动态绑定,以下举例: (动态绑定是在运行期间) 动物类: /** * 创建一个动物类 * @author Liudeli * ...

  3. Python学习-30.Python中的元组(tuple)

    元组使用()定义,元组一旦定义就无法修改. 元组的索引方式同列表,也是使用[]. 元组也可以进行切片操作,使用方式同列表一样. 可以说,一个没法修改的列表就是元组. 在没有修改操作的情况下,应尽可能使 ...

  4. Elasticsearch 的一些关键概念

    我更喜欢把 Elasticsearch 作为一种 nosql 去理解,它的一些开发概念和 MongoDB 以及 Redis 没有太大的区别,不过了解 Elasticsearch 中的一些核心概念对于你 ...

  5. WPF Out Of Memory

    起因 程序发布后,运行突然奔溃报Out of Memory,查看日志发现如下类似错误(以下堆栈信息来之网络): System.OutOfMemoryException: Insufficient me ...

  6. C#模拟请求,模拟登录,Cookie设置、文件上传等问题汇总

    由于业务需求,最近需要模拟完成登陆某个网站,并上传所需要的文件.在开发途中,遇到了很多问题,现在,就我遇到的一些问题及解决办法说明如下,希望对遇到同样问题的人有所帮助.因为技术有限,可能有些内容并不完 ...

  7. redis的常用公共方法(2)

    之前已经写过一篇redis公共方法的使用(https://www.cnblogs.com/jhy55/p/7681626.html),可是发现在高并发的时候出现 Unknown reply on in ...

  8. .Net 百度经纬度转高德

    1.需求 由于我们项目里面的经纬坐标是百度的,而对接的第三方需要的是高德的经纬坐标,两者之间是有位差区别的,不能直接使用,我们需要通过一个算法将百度经纬度转化为高德经纬度,在百度官网上,有java算法 ...

  9. 批处理系列(18) - 基于BitLocker的开锁上锁

    首先要配置好BitLocker. 上锁 lock.bat @echo off rem 上锁前要结束一些程序,浏览器要注意:有恢复上次关闭项功能,按需设置取消该操作 taskkill /f /t /im ...

  10. 600. Non-negative Integers without Consecutive Ones

    Given a positive integer n, find the number of non-negative integers less than or equal to n, whose ...