`

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);
    }

}
分享到:
评论

相关推荐

    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

    3796 i-FRAME 安装、操作和维护手册

    3796 i-FRAME 安装、操作和维护手册

    我的visio画图 资源备用

    我的visio画图

    NPOI是指构建在POI 3.x版本之上的一个程序

    NPOI可以在没有安装Office的情况下对Word或Excel进行读写,NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目

    基于STM32F103C8单片机设计-旋转编码器数码管显示程序KEIL工程源码.zip

    STM32学习软件编程资料,STM32F103C8单片机经典外设应用设计实例软件源代码,KEIL工程文件,可供学习参考。

    VoLTE高丢包优化指导书.xlsx

    VoLTE高丢包优化指导书

    LTE容量优化高负荷小区优化指导书.docx

    5G通信行业、网络优化、通信工程建设资料

    中国移动无线、传输专业项目全生命周期、建设期、施工期控制标准.docx

    5G通信行业、网络优化、通信工程建设资料

    基于Springboot+Vue校园周边美食探索及分享平台毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    基于Springboot+Vue善筹网(众筹)前后台实现设计-毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    203ssm-mysql-jsp 包头市交通管理局路况查询系统.zip(可运行源码+数据库文件+)

    该课题主要是以SpringMVC模式运行的,采用了mysql数据库进行数据的管理,掌握并且熟练使用百度API相关技术。系统分为了管理员用户和一般用户,主要有以下模块: 管理员用户: 1.实时路况管理:实时路况的信息采用了百度地图进行直观的管理,利用了GIS相关技术进行管理,能够让用户方便的第一时间查看到相应的地图信息,以及实时路况信息。 2.投诉留言管理:实现了对投诉留言信息的查看和回复。 3.系统信息设置:实现了系统的访问数据的统计,以及针对系统的管理员 用户和管理员密码进行管理。 4.用户信息管理:管理了一般用户的基本信息情况,针对用户的资料进行修改管理。 一般用户: 1.用户资料管理:实现了用户个人的资料信息管理。 2.路况信息查看:实现了对路径的实时信息的查看,某个路段在某时间的交通情况的查看,以三种情况代表路况情况(拥挤、缓行和畅通) 3.路况分析:采用了折线图,分析每天或者某个月的路况信息,以折线图形式直观展示。该功能采用jFreeChart库实现。 4.留言发布:针对一些路况信息,进行留言反馈,并能查看管理员反馈信息。

    施工现场安全技术交底模板.doc

    5G通信行业、网络优化、通信工程建设资料。

    GSM室分优化掉话专题总结报告.docx

    5G通信、网络优化与通信建设

    通信线缆基本理论.docx

    5G通信行业、网络优化、通信工程建设资料。

    node-v12.20.1-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    199-数据安全治理的思考与规划-论剑.pdf

    199-数据安全治理的思考与规划-论剑.pdf

    SPVLoc: Semantic Panoramic Viewport Matching for 6D Camera Local

    SPVLoc: Semantic Panoramic Viewport Matching for 6D Camera Localization in Unseen Environments

    基于Springboot+Vue校园资料分享平台毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

Global site tag (gtag.js) - Google Analytics