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数据操作 这篇主 ...
随机推荐
- java中如何通过Class获取类的属性、方法、注释
public static String getPKName(Class clazz) { Field[] fields = clazz.getDeclaredFields(); for (Field ...
- 为spring代理类设置属性值
现在有一个bean包含了私有属性,如下: @Component public class Bean { String name; public String getName() { return na ...
- 设计模式总结(《Head First设计模式》学习总结)
写在前面: 学习过程中不仅要熟练掌握技能,理论的消化吸收也必不可少.虽然个人更倾向于学习技术类的东西(短时间的精力投入很快就能看到成效...),但看了很多前辈的经验总结后才知道理论性的东西是绝对不能忽 ...
- Cordova - 实现热更新 !
Cordova版本:8.0.0 更新APP平台:Android 操作系统:Windows Cordova的热更新,作用是把www内的变动部分更新到APP中,实现主程序不动,完成更新!!这个热更新功能, ...
- Exp2 后门原理与实践 20164321 王君陶
Exp2 后门原理与实践 20164321 王君陶 一.实验内容 基础问题回答: 1.例举你能想到的一个后门进入到你系统中的可能方式? 答:通过漏洞,点击陌生链接,或者浏览不良网页挂马. 2.例举你知 ...
- “全栈2019”Java多线程第十八章:同步代码块双重判断详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- django 使用其自带的验证系统 进行用户名有效性验证 登录状态验证 登入操作 登出操作
from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, l ...
- Design-341. Flatten Nested List Iterator
Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ...
- poj3070矩阵快速幂求斐波那契数列
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13172 Accepted: 9368 Desc ...
- express form/ajax 后端获取前端数据
-------------------2017/12/02补充:缺了一个重要条件... var bodyParser = require('body-parser');var app = expres ...