我们在写JAVA程序时,很多时候运行程序的参数是需要动态改变的

测试时一系列参数,运行时一系列参数

又或者数据库地址也需要配一套参数,以方便今后的动态部署

这些变量的初始化,我们在写小DEMO时完全可以写死在JAVA文件中

但程序需要发布或者局部部署时,这些参数就需要脱离程序代码了

我们有多种存放参数的方式,比如数据库、XML文件又或者直接是txt文件

现在介绍一种使用JAVA,简单方便的参数读取方式

.properties文件,我们并不陌生,很多优秀的框架中就能看到它的存在,比如Hibernate

在src文件目录下,新建一个后缀为.properties的文件,用任意文本编辑器打开它,就可以使用键值对的方式设置您程序的运行参数了

类似于这样

#wangqun fd60e46db0dc119cfea740c3375fd7c4
#toAccountId=fd60e46db0dc119cfea740c3375fd7c4
#huangshi 1645a78135328c4b
toAccountId=1645a78135328c4b
#tangwei 6c0f7514f4bd0016
#shixiaoping 98f30bad9e6789af
#toAccountId=6c0f7514f4bd0016
#toAccountId=6c0f7514f4bd0016,1645a78135328c4b,98f30bad9e6789af #cron=0 32 8-11,14-20/1 * * ?
cron=0/10 * * * * ? fileName=d\:/\u59DC\u5830\u5468\u79EF\u5206\u7BA1\u63A7\u53CA\u53CC\u767E\u5146\u8BAD\u7EC3\u84250830.xlsx
sheetName=\u6C47\u603B
fromIndex=0,1
toIndex=48,12
#fromIndex=1,4
#toIndex=13,12 dirPath=C:/apache-tomcat-8.0.28/webapps/test/
urlPath=http://61.132.43.176:8081/test/ database_host=132.240.9.36
database_port=1521
database_user=jy
database_name=yxdb
database_pwd=OVQwu8QSm4CWktEZdnjtxg== sql_str=select * from hs_bb_rbb r order by r.no
modify_sheet=sheet1
modify_from=1,0
time_cell=1,4

注意一下几点:

一、用#号表示注释,可以多录入一些配置可能,运行时动态注释或者打开,比较方便

二、.properties明文存储,所以敏感字符需要加密,比如数据的密码

三、遇到中文,是个棘手的问题,最简单的方式是使用MyEclipse的properties文件编辑器来写入,会自动将中文转码

四、所有参数只可以以字符串形式存储,至于类型转换,请在JAVA中解析完成

五、适用于只读不写的参数配置,如果程序运行过程中需要修改这些环境参数,建议考虑数据库读写方式,而不是properties

下面是JAVA程序,mian函数一开始就可以对这个properties文件进行读取

public static void main(String[] args) throws Exception{
//读取properties配置文件
Properties prop=new Properties();
prop.load(QuartzDemo.class.getResourceAsStream("/set.properties"));
String cron=prop.getProperty("cron","0/10 * 8-7 * * ?");
String fileName=prop.getProperty("fileName","d:/2014年1月营销活动报表140116.xlsx");
String sheetName=prop.getProperty("sheetName", "支局视图");
String dirPath=prop.getProperty("dirPath","C:/apache-tomcat-8.0.28/webapps/test/");
String urlPath=prop.getProperty("urlPath","http://61.132.43.176:8081/test/");
String fromIndexStr=prop.getProperty("fromIndex","0,0");
String toIndexStr=prop.getProperty("toIndex", "17,20"); String database_host=prop.getProperty("database_host","");
String database_port=prop.getProperty("database_port","");
String database_user=prop.getProperty("database_user","");
String database_name=prop.getProperty("database_name","");
String database_pwd=DESHelper.decrypt(prop.getProperty("database_pwd",""),"newflypig");
String sql_str=prop.getProperty("sql_str","");
String modify_sheet=prop.getProperty("modify_sheet","");
String modify_fromStr=prop.getProperty("modify_from","0,0"); String[] splitStr=fromIndexStr.split(",");
int[] fromIndex={Integer.parseInt(splitStr[0]),Integer.parseInt(splitStr[1])};
splitStr=toIndexStr.split(",");
int[] toIndex={Integer.parseInt(splitStr[0]),Integer.parseInt(splitStr[1])};
splitStr=modify_fromStr.split(",");
int[] modify_from={Integer.parseInt(splitStr[0]),Integer.parseInt(splitStr[1])}; }

Properties类提供了非常便捷的读取properties文件的操作,还包括一些默认值的配置,再次需要注意的是,只能读String,如果遇到其他数据类型,聪明的你一定知道怎样用String类型转换这些类型吧。

给你的JAVA程序配置参数(Properties的使用)的更多相关文章

  1. java程序启动参数-D含义详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt407 java程序启动参数 -D是用来做什么的呢?去查询了一下官方解释: S ...

  2. Java程序运行参数

    Java主函数形式:public static void main(String[] args){......} 也就是说可以向Java程序传递一个String[]. 1.在IDEA中debug.ru ...

  3. java程序启动参数

    例如 启动进程如下 /home/work/noah/ccs/jc-controller/jdk1.7.0_55/bin/java -Xmx4096m -Xms4096m -Xmn1024m -XX:+ ...

  4. liunx 定时任务执行java程序配置流程

    java jar包使用build fat jar进行打包 ------------------liunx任务创建--------------------------- 1.查看现有任务计划: cron ...

  5. java -jar 配置参数写法说明

    java -Dxxx=test  -jar xxx.jar  (放在-jar之前) 取值:System.getProperty("xxx") spring的@value(" ...

  6. 图说hibernate注释--java里配置参数(一.1)

    **************************************************************[来自我另一博文]

  7. Maven编译Java程序配置

    Hive 需要在工程里添加的Jar包: hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar $HIVE_HOME/lib/hive-exe ...

  8. 第一次尝试学习java 安装jdk 与配置环境变量 写第一个java程序 并运行

    第一次学习java,今天知道了java之父叫  詹姆斯.高司令 其它的记不住太多,首先我们先来安装jdk 百度搜索jdk12   (现在的jdk为12版本)安装稳定版 找到javaSE12X..  下 ...

  9. 一劳永逸Java环境配置,以及编写我的第一个Java程序

    Java环境配置,以及编写我的第一个Java程序 配置步骤 1.下载jdk 2.安装步骤 3.配置环境 4.我的第一个Java程序 配置步骤 网上的教程有很多,方法也都不尽相同.今天我就分享一下我的配 ...

随机推荐

  1. iOS开发网络编程之断点续传-NSURLConnection

    最近在做一个小项目的时候,发现使用NSURLSession或者AFNNetworking进行断点续传时诸多的不便,于是自己封装了一个类来实现断点续传,在程序重新启动时仍然可以继续下载(需自己调用方法) ...

  2. 请求--拦截器--action经过

    引用我这里想知道的是同名的多个参数,会被自动的放置在List或者数组中,我想知道是怎么实现的,因为取一个参数和取多个同名的参数是不同的方法: 一个是request.getParameter 一个是re ...

  3. PHP 开发中的外围资源性能分析(一)

    暂且不讨论「PHP 是不是最好的编程语言」,本文我们将分别分析一下在 PHP 程序的后端外围资源和前端外围资源,它们对整个 PHP Web 应用体验的影响,这往往比语言本身大得多. 首先,后端外围资源 ...

  4. Git 使用方法

    Git 常用命令 git init here -- 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息.标记等内容 git remo ...

  5. [主席树]SPOJ DQUERY

    题目链接 题意:n个数 m个查询 查询的是[l, r]区间内不相同的数的个数 没有修改,因此静态的主席树就好了 将重复的元素建树即可 query的时候加起来,用区间长度(r-l+1)去减就是答案 (q ...

  6. Java中Integer的源码学习

      一.开始 public final class Integer extends Number implements Comparable<Integer> 1).由于类修饰符中有关键字 ...

  7. lintcode:递归打印数字

    题目 用递归打印数字 用递归的方法找到从1到最大的N位整数. 样例 给出 N = 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N = 2, 返回[1,2,3,4,5,6,7,8,9,10 ...

  8. ASP.Net WebForm学习笔记:一、aspx与服务器控件探秘

    作者:周旭龙 出处:http://edisonchou.cnblogs.com 开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便 ...

  9. [mock]8月8日

    第一题是整数的方阵,求其中的子方阵,和最大.返回最大和以及子方阵宽度.因为做了topcoder的题,所以比较顺手,O(n^3)的复杂度. pair<int,int> maxiSum(vec ...

  10. windows下顽固软件卸载不了的解决方法

    下面以autocad2012举例: cad2012卸载显示 “无法获得同类产品” 而且也安装不上. 解决方法:1,开始>运行>输入"regedit",找到下面的注册表路 ...