代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
通用基础属性配置类与常量类封装
作者:
tomz
/ 发布于
2014/9/10
/
436
Java项目中几乎必用到常量,比如文件上传路径、定时任务配置参数等等,为了项目所有用到的地方能统一、方便的使用,一般都会定义常量类。但是常量类中许多常量其实也是可变的,最后做成能进行外部配置的。所以就简单封装了一个基础配置类
package com.zk.util; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; import java.util.Properties; import java.util.Set; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver; /** * 基础属性配置解析 */ public class BasePropConfig implements Serializable { private static final long serialVersionUID = 8042355387234201583L; public static HashMap<String,String> propMap = new HashMap<String,String>(); public static String EMPTY_STR = ""; private static String configFile = "classpath*:prop.properties"; private static List<String> configFiles = null; public BasePropConfig() { if(!propMap.isEmpty()){ parseConfigProperties(); } } static{ //加载默认配置 loadConfigFile(); } //加载单配置文件 private static boolean loadConfigFile(){ try { ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource[] resources = resolver.getResources(configFile); if(resources == null){ return false; } Properties p = new Properties(); for(Resource r : resources){ if(r != null){ p.load(r.getInputStream()); mergeProperties(p); } } } catch (IOException e1) { e1.printStackTrace(); } return true; } //加载多配置文件 private static boolean loadConfigFiles(){ if(configFiles == null){ return false; } try { ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); List<Resource> resources = new ArrayList<Resource>(); for(int idx = 0; idx<configFiles.size(); idx++){ Resource[] tempResoureArr = resolver.getResources(configFiles.get(idx)); if(tempResoureArr != null){ for(int i = 0; i < tempResoureArr.length; i++){ if(tempResoureArr[i] != null){ resources.add(tempResoureArr[i]); } } } } Properties p = new Properties(); for(Resource r : resources){ if(r != null){ p.load(r.getInputStream()); mergeProperties(p); } } } catch (IOException e1) { e1.printStackTrace(); } return true; } //合并配置 private static void mergeProperties(Properties p){ Set<Entry<Object, Object>> entrySet= p.entrySet(); for(Entry<Object, Object> entry : entrySet){ if(entry.getKey() != null){ propMap.put((String)entry.getKey(), (String)entry.getValue()); } } } /** * 获取配置 * @param key * @return value */ public static String get(String key){ String v = propMap.get(key); if(v != null){ return v.trim(); } return null; } /** * 获取配置 * @param key * @return value */ public static String get(String key,String defaultValue){ String v = propMap.get(key); if(v == null || EMPTY_STR.equals(v.trim())){ return defaultValue; } return v.trim(); } /** * 获取配置 * @return HashMap<String,String> */ public static HashMap<String,String> getMap(){ return propMap; } //供spring注入配置 public void setConfigFile(String configFileName) { configFile = configFileName; if(loadConfigFile()){ parseConfigProperties(); } } //供spring注入配置 public void setConfigFiles(List<String> configFileNames) { configFiles = configFileNames; if(loadConfigFiles()){ parseConfigProperties(); } } /** * 解析配置,需要你@Override * 你可以使用get(key) or get(key,defaultValue) 得到配置 */ public void parseConfigProperties(){}; } package com.zk.util; import java.io.Serializable; /** * 系统常量 */ public class Constants extends BasePropConfig implements Serializable { private static final long serialVersionUID = 8042355387234201583L; /*** * 附件保存路径 */ public static String ATTACHMENT_SAVE_PATH; public static String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static String TIME_FORMAT_NUM = "yyyyMMddHHmmss"; public static String ATTACHMENT_DOWNLOAD_PATH = "/admin/attachment_download.action?file="; //可以添加更多的静态变量 //这个方法是重写父类的,解析文件后会自动调用 public void parseConfigProperties() { //文件配置覆盖默认的值 ATTACHMENT_SAVE_PATH = get("ATTACHMENT_SAVE_PATH",EMPTY_STR); } } 3. [代码]使用方法 ? 1 2 3 4 5 6 7 8 //1、访问常量 Constants.静态变量名 //比如Constants.ATTACHMENT_DOWNLOAD_PATH 获取附件存储路径 //2、直接通过key/value方式获取属性配置 Constants.get(key); //或者通过Constants.get(key,defaultValue) //3、获取属性Map Constants.propMap.get(key);//或者Constants.getMap().get(key) 4. [代码]配置(单文件,如果不配置默认为classpath下prop.properties) ? 1 2 3 <bean id="Constants" autowire="byName" class="com.zk.util.Constants"> <property name="configFile" value="classpath*:constants.properties"></property> </bean> 5. [代码]配置(多文件) ? 1 2 3 4 5 6 7 8 <bean id="Constants" autowire="byName" class="com.zk.util.Constants"> <property name="configFiles"> <list> <value>classpath*:constants.properties</value> <value>classpath*:constants2.properties</value> </list> </property> </bean> #附件保存路径 ATTACHMENT_SAVE_PATH=d:\\uploads
试试其它关键字
通用基础属性
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
tomz
贡献的其它代码
(
1
)
.
通用基础属性配置类与常量类封装
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3