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. POJ1062不错的题——spfa倒向建图——枚举等级限制

    POJ1062 虽然是中文题目但是还是有一定几率都不准题目意思的:1.所有可能降价的措施不是降价多少钱而是降至多少钱2.等级范围:是你所走的那一条路中所有人中最好最低等级差不允许超过limit限制 思 ...

  2. Bellman_ford货币兑换——正权回路判断

    POJ1860 题目大意:你在某一点有一些钱,给定你两点之间钱得兑换规则,问你有没有办法使你手里的钱增多.就是想看看转一圈我的钱能不能增多,出现这一点得条件就是有兑换钱得正权回路,所以选择用bellm ...

  3. [PHP-Debug] 使用 php -l 调试 PHP 错误遇到的坑

    有时候,因为系统代码的增加,造成很多文件的相互关联,又或者某些第三接口(微信等),你必须要在线上调试. 线上环境,我们都是设置 “ini_set('display_errors' , false)” ...

  4. Linux测试上行和下载速率

    下载安装speedtest-cli测试工具 方法一: pip3 install speedtest-cli 方法二: wget https://github.com/sivel/speedtest-c ...

  5. kafka不停止服务的情况下修改日志保留时间

    kafka配置文件如下: broker.id=1 port=9092 host.name=ssy-kafka1 num.network.threads=4 num.io.threads=8 socke ...

  6. Tomcat的error-page掩盖action实例化的exception

    在使用Struts2+Spring+Tomcat开发的时候,为了避免骚扰用户,线上系统我们一般会定义错误处理页面.但是如果开发环境中也这么做(在web.xml定义了错误转发页面),而碰巧某个actio ...

  7. asp.net接收传入的数据流

    我们在日常的应用中,都会遇到这样一个问题,就是我们做的asp.NET程序,会收到其它第三方软件传过来的一些信息数据流,当然了一些文本形式的信息,可以采用get或post的方法来接收,可是要是传过来的是 ...

  8. .net4.0重新注册IIS 的方法

    操作步骤如下: 1.开始 2.运行 3.cmd 4.cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 5.aspnet_regiis.exe -i

  9. 知识记录:ASP.NET 应用程序生命周期概述及Global.asax文件中的事件

    IIS7 ASP.NET 应用程序生命周期概述 https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx HttpApplica ...

  10. Mac OS 10.12 - 如何关闭Rootless机制?

    一,进入恢复模式(Recovery):具体操作方法参见下面这篇博客: http://www.cnblogs.com/sunylat/p/6414697.html 二,关闭Rootless机制 1,选择 ...