package com.tianmushanlu.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
/**
* properties文件装载读取类
*
*
*
*/
public class Config {
private static final Log log = LogFactory.getLog(Config.class);
private static final String CONFIG_FILE = "classpath*:conf/*.properties";
private static final Config instance = new Config();
private final Map<String, String> configCache = new HashMap<String, String>();
/**
* 默认装载conf目录下的所有以.properties为后缀的属性配置文件
*/
private Config() {
Resource[] resources = getResources(CONFIG_FILE);//加载所有文件
for (Resource resource : resources) {
InputStream in = null;
try {
Properties properties = new Properties();
in = resource.getInputStream();
properties.load(in);
Enumeration<?> propertyNames = properties.propertyNames();
//读取各文件中的属性名
while (propertyNames != null && propertyNames.hasMoreElements()) {
String name = (String) propertyNames.nextElement();
if (StringUtils.isNotEmpty(name)) {
//将各文件中的属性名添加至configCache,以键值对的形式存储
configCache.put(name, properties.getProperty(name));
}
}
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("解析配置文件[classpath:" + resource.getFilename() + "]异常:", e);
}
throw new RuntimeException(e);
} finally {
IOUtils.closeQuietly(in);
}
}
}
public static Config getInstance() {
return instance;
}
public String getString(String key) {
return configCache.get(key);
}
/**
* 在classpath*目录下搜索资源文件
*
* @param locationPattern
* @return
*/
public static Resource[] getResources(String locationPattern) {
PathMatchingResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = new Resource[0];
try {
resources = patternResolver.getResources(locationPattern);
} catch (IOException e) {
throw new RuntimeException(e);
}
return resources;
}
}
分享到:
相关推荐
### 读取Properties文件:Java中的配置管理利器 在Java编程中,`Properties`类是处理配置文件(通常为`.properties`格式)的关键工具。这种文件格式被广泛应用于存储应用程序的配置信息,如数据库连接字符串、邮件...
2. load(InputStream inStream) 方法:该方法用于从输入流中读取 Properties 配置文件,并将其加载到 Properties 对象中。 3. setProperty(String key, String value) 方法:该方法用于设置 Properties 配置文件...
Java中Properties类是Java.util包中的一个重要类,主要用于读取Java的配置文件。Properties类继承自Hashtable,提供了几个主要的方法,包括getProperty、load、setProperty、store和clear等。 一、Java Properties...
总结,Java.util.Properties类是Java中处理.properties文件的标准方式,提供了便捷的方法来读取、写入和管理配置信息。通过理解并熟练运用这些方法,开发者可以更好地管理应用程序的配置,提高代码的可维护性和灵活...
首先,YAML文件的格式相比.properties文件更加直观,能够更好地组织和表示层次化的配置。例如,一个简单的YAML配置文件可能如下所示: ```yaml server: port: 8080 servlet: context-path: /app ``` 在Spring ...
其中第16行通过类路径的映射方式,将sshfile.model类包目录下的所有领域对象的映射文件装载进来,在本文的例子里,它将装载进Tfile.hbm.xml映射文件。如果有多个映射文件需要声明,使用类路径映射方式显然比直接...
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...
System.err.println("不能读取属性文件. " + "请确保db.properties在CLASSPATH指定的路径中"); return; } String logFile = dbProps.getProperty("logfile", "DBConnectionManager.log"); try { log = new ...
2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. 对Websphere 事务管理的完整支持 2.4.3. JPA 2.4.4. 异步的JMS 2.4.5. JDBC ...
2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. 对Websphere 事务管理的完整支持 2.4.3. JPA 2.4.4. 异步的JMS 2.4.5. JDBC ...