`

PropUtil

 
阅读更多
/**
*
*/
package com.yulong.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Properties;

import org.apache.log4j.Logger;

/**
*
*/
public class PropUtil
{

private final Logger logger = Logger.getLogger(this.getClass());
private static final String DEFAULT_PROPERTY = "application_config.properties";
    
    private String propFile;
    private File configFile;
    private long fileLastModified;
    private Properties props;

   
    public PropUtil()
    {
    this(DEFAULT_PROPERTY);
    }    
    public PropUtil(String propFile)
    {
    this.propFile = propFile;
   
    init();
    }    
    private void init()
    {
        URL url = PropUtil.class.getResource(propFile);
        if (url == null)
        url = PropUtil.class.getClassLoader().getResource(propFile);
        try {
url = new URL(URLDecoder.decode(url.toString(),"UTF-8"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (url == null)
url = ClassLoader.getSystemResource(propFile);
//if (url == null)
// throw new IllegalArgumentException("coundn't find resource [" + propFile + "]");

if (url != null)
configFile = new File(url.getFile());  
else
configFile = new File(propFile);

        if (configFile == null || !configFile.exists())
        throw new IllegalArgumentException("coundn't find resource [" + propFile + "]");
      
        fileLastModified = configFile.lastModified();       
if (logger.isDebugEnabled())
logger.debug("properties file is: " + propFile +", last modified time is: "+ fileLastModified);
       
        props = new Properties();
        loadProperty();   
    }
    private void loadProperty()
    {
        try
        {
            props.load(new FileInputStream(configFile));
            fileLastModified = configFile.lastModified();            
        }
        catch (IOException e)
        {           
            throw new RuntimeException(e);
        }
    }

    public String getProperty(String key)
    {       
    return (getProperty(key, ""));
    }
    public String getProperty(String key, String defValue)
    {        
        if (configFile.lastModified() > fileLastModified)
        {
    loadProperty();
   
    if (logger.isDebugEnabled())
    logger.debug("properties file is reload at " + fileLastModified);        
        }
       
        String prop = props.getProperty(key);
       if (prop == null || "".equals(prop))
        prop = defValue;
      
if (logger.isDebugEnabled())
logger.debug("property is: " + prop);    
               
        return (prop);
    }
   
    public synchronized void setProperty(String key, String value)
    {   
    props.setProperty(key, value);
    }

}
分享到:
评论

相关推荐

    毕业设计JSP数据库连接池的研究与实现(源代码+论文).zip

    1. `PropUtil.class`:这是一个用于读取和处理配置属性的工具类,通常用于获取数据库连接池的配置参数,如数据库URL、用户名和密码等。 2. `DataSourceProviderServlet.class`:这是一个Servlet,负责在Web应用启动...

    基于Java的源码-常用工具包 Jodd.zip

    例如,PropUtil可以帮助开发者处理属性文件,读取、写入和转换配置参数。此外,该模块还提供了系统属性和环境变量的便捷访问方法,使得在不同环境中配置应用变得简单。 3. **Out模块**: Out模块是Jodd中的日志...

    Java常用工具包 Jodd

    8. **属性配置**:PropUtil是用于处理配置文件的工具,可以读取和写入.properties文件,支持动态更新配置,使得应用配置管理更加灵活。 9. **日志系统**:Jodd的日志组件Loggin提供了简单易用的日志接口,支持多种...

    obj-prop-util:用于对象操纵的实用程序

    obj-util 对象属性操纵的实用程序安装$ npm install --save obj-prop-util例子import {camelCaseKeys, snakeCaseKeys} from 'obj-prop-util';const foo = { fooBar: 'baz'};const bar = { foo_bar: 'baz'};...

    apache ftp文件及文件夹上传下载删除

    apache ftp文件、文件夹上传、下载、删除功能代码,包含jar包,FtpUtil、PropUtil、ftp.properties ftpUtilTest propUtilTest文件,注释详细。希望对你有用 ============Good luck to you. 作者签字:北京-星辰

    QianJunSmartFramework

    QianJunSmartFrameworkV1.0.9 数据库的连接+servlet连接池+ThreadLocal+dbutilsDatabaseHelper 提供与数据库的访问PropUtil提供加载JDBC配置信息CustomerService提供服务,电用DatabaseHelper

Global site tag (gtag.js) - Google Analytics