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

思路如下:
- Class.getClassLoader() 返回类加载器ClassLoader,进而可以获取到classpath路径下的资源
- ClassLoader.getSystemResourceAsStream() 返回读取指定资源的输入流InputStream
- 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工程下的配置文件,工具类的更多相关文章
- java读取resource目录下的配置文件
java读取resource目录下的配置文件 1:配置resource目录 下的文件 host: 127.0.0.1 port: 9300 2:读取 / 代表resource目录 InputSt ...
- Java语言Lang包下常用的工具类介绍_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数.你可知道,有很多现成的工具类可用,并且代码质量都 ...
- Java读取maven目录下的*.properties配置文件
public class ReadProperties{ private static String proFileName = "/config/MQSubjectId.propertie ...
- java读取写入oracle的blob字段工具类
import com.hzunitech.fxgk.sys.model.UtFileData;import com.jfinal.kit.PathKit;import com.jfinal.plugi ...
- Java读取properties配置文件工具类
1. PropertyUtils.java package javax.utils; import java.io.InputStream; import java.util.Properties ...
- Maven工程下报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
Maven工程下,webapp下面新建index.jsp文件,报如下错误. 原因很简单,没有安装如下maven依赖包: <dependencies> <!-- JSP相关 --> ...
- Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用
Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单 ...
- Maven 工程下 Spring MVC 站点配置 (一)
最近,查找一些具体资料时,虽然会有很多,但是系统的却很少,尤其是对maven 下 spring mvc 站点搭建的配置,总是说的很多但让新手一目了然的步骤却少之又少. 对此闲暇时整理了一下,做了一套较 ...
- Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作
详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...
随机推荐
- eclipse中java build path下 allow output folders for source folders 无法勾选,该如何解决 eclipse中java build path下 allow output folders for source folders 无法勾选,
在创建maven工程时,在设置output folders时,总是勾选以后,老是自动恢复到原来的状态,对比其他的maven的工程发现是在创建maven时候选择的项目为pom,而不是war或者jar,将 ...
- iOS Development和iOS Distribution有什么区别
http://zhidao.baidu.com/link?url=T9od33JuA7jjxzfyV-wOjuVLSNUaqpc9aoCu2HjfYfHBuRLW1CNDii0Bh9uvG6h-GeJ ...
- EasyUi TreeGrid/DataGrid getChecked BUG
问题描述 步骤一,选中左边树一个节点,然后出现相应的数据,选中进行保存.如,我选中了前4个节点,上图: 步骤二,我再选tree中第二个节点,进行相应的选中和取消选中treegrid中的节点,并保存. ...
- Team Foundation Server (TFS)集成Flyway,实现数据库的版本管理
1 概述 在系统开发过程中,我们对软件源代码的版本管理,已经有了比较成熟的解决方案.通过使用TFVC或GIT等源代码管理工具,可以非常方便的对软件代码实现回退.比较.分支合并等版本操作.对于软件依赖的 ...
- 初探Angular_03 组件中模板数据绑定
这里将介绍三种情况的数据绑定 需要TypeScript的基本知识,如TS数据类型 一.模板属性绑定数据 1.模板属性其实HTML的属性,如class,style,title等 2.先在header.c ...
- vue+webpack学习连接地址
vue.js+webpack模块管理及组件开发 http://geocld.github.io/2016/03/14/vuejs_webpack/ 30分钟手把手教你学webpack实战 https: ...
- 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构
本篇承接上篇内容,如果你不小心点击进来,建议重新从第一篇开始完整阅读. 构建NetCore应用框架之实战篇索引 一.BitAdminCore框架简介 从前篇论述我们知道,我们接下来将要去做一个管理系统 ...
- Java的HashMap
FAQ: 为什么要有HashMap? 答:我非常期待能在Java 中使用Hash表 这种数据结构 ,因为它的快速存取特性. Hash表 和HashMap的关系? 答:Hash表 是一种逻辑数据结构,H ...
- github本地分支合并到线上主分支
如果是在本地index-swiper分支上,已经写好了那么: 1,git add . //提交到本地缓冲区 2,git commit -m "project init ...
- Ubuntu16.04安装使用Consul
Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStack 等相比,Consul 的方 ...