`
hanqunfeng
  • 浏览: 1526289 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

巧用系统属性

    博客分类:
  • JAVA
阅读更多

我们都曾在项目中使用过.properties,比如多语言支持,参数配置等等,一般都是name=value的形式,然后系统的其它地方对其引用。

原始方式

举个例子,spring配置文件里配置一个数据源,这里只是举例,实际使用时推荐使用JNDI:

 

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="initialSize" value="${jdbc.initialSize}"/>
<property name="maxActive" value="${jdbc.maxActive}"/>
<property name="maxIdle" value="${jdbc.maxIdle}"/>
<property name="minIdle" value="${jdbc.minIdle}"/>
<property name="maxWait" value="${jdbc.maxWait}"/>
</bean>

<beanid="propertyConfigurer"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>

如果使用spring命名空间,可以使用如下方式:

<context:property-placeholder location="classpath:jdbc.properties" />

然后在jdbc.properties里这样配置:

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.0.18:1521:dbserver
jdbc.username=testuser
jdbc.password=123456
jdbc.initialSize=0
jdbc.maxActive=8
jdbc.maxIdle=8
jdbc.maxWait=0
jdbc.minIdle=-1

这样,在spring在初始化dataSource时会读取jdbc.properties的内容进行相应的替换,部署程序或更换环境时修改这个properties就可以了。

改进方法

不过有些部署人员可能更喜欢去修改web.xml,比如部署时只需要修改数据库的SID,我们可以将这个参数像这样配置在web.xml中:

<context-param>
<param-name>dbserver.sid</param-name>
<param-value>dbserver</param-value>
</context-param>

然后在加入一个监听器:

<listener>
<listener-class>com.local.DBServerSIDListener</listener-class>
</listener>

监听器代码如下:

package com.local;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class DBServerSIDListener implements ServletContextListener {

public static final String DB_SERVER_SID= "dbserver.sid";

public void contextDestroyed(ServletContextEvent event) {
System.getProperties().remove(DB_SERVER_SID);
}

public void contextInitialized(ServletContextEvent event) {

ServletContext context = event.getServletContext();
String sid= context.getInitParameter(DB_SERVER_SID);
System.setProperty(DB_SERVER_SID, sid);
}

}

其实就是使用System.setProperty(DB_SERVER_SID, sid);在启动时将数据库的SID放到系统属性中,

此时修改jdbc.properties,如下:

jdbc.sid=${dbserver.sid}

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.0.18:1521:${jdbc.sid}
jdbc.username=testuser
jdbc.password=123456
jdbc.initialSize=0
jdbc.maxActive=8
jdbc.maxIdle=8
jdbc.maxWait=0
jdbc.minIdle=-1

这样就完成了配置。

为什么将参数放入系统属性spring也可以解释呢,原因就是,当spring读取配置时,如果在配置文件没有查找到,会去读取系统属性的。

其实这种方式可以应用到很多地方,大家可以举一反三。

需要注意的地方

不过使用系统属性时需要注意,系统属性是驻留在jvm里的,也就是说所有使用同一个jre(或者jdk)的东东都能够取到这个属性,如果两个应用中设置了相同属性key的属性,是会互相干扰,所以设置属性时一定要注意属性名不能相同。

如果大家不清楚jvm里都有哪些属性,可以用下面的方法查看:

for (Iterator i = System.getProperties().keySet().iterator(); i.hasNext();) {
String key = (String) i.next();
String val = System.getProperty(key);
System.out.println(String.format("%s=%s", key, val)+"<br>");
}


分享到:
评论

相关推荐

    WindowsResizer(窗口属性修改工具)v1.0.3免费中文绿色版

    Windows Resizer 是一个用来修改窗口属性的小程序。程序小巧实用,包含英文程序,方便在EWin中运行,完全绿色软件,源代码公开且免费,快来下载体验吧。 软件功能: 查找控件的句柄; 设置窗口大小; 更改窗口的标题...

    ICMS建站系统 v2012 Build1073.rar

    3.自定义推荐属性:推荐属性为内容发布时可选择的特殊属性标识,如“热荐”、“头条”等等,通过系统推荐属性管理自由添加需要的属性。 4.分组式管理员权限:后台权限设置以“管理员分组”为单位,添加管理员分组时...

    bulk file changer 文件属性批量修改工具

    Bulk File Changer是一个小巧的程序,允许您从多个文件夹中创建文件列表,然后对它们执行一些操作——修改它们的创建/修改/访问时间,更改它们的文件属性(只读、隐藏、系统),以这些文件为参数运行可执行文件,并...

    西部浪花公文传输系统 v2.0.rar

    一键更改网站状态、网站头部风格、修改网站标题、设置网站基本资料和网站系统属性等。 用户设置:管理员分为超级管理员或普通管理员(共4级),超级管理员具有网站最高权限,普通管理员部分功能被限制。 短信号码...

    WEB通用权限管理系统源码

    8、附加属性(自定义属性) 9、系统日志(异常记录) 10、数据库备份/还原 11、资源管理,(动态数据库) 12、个人信息(基本信息,附加信息,用户角色,拥有权限) 13、首页快捷 14、数据回收站(业务功能删除过...

    网上购物系统

    确认更改:在数量项目文本框中可以更改数目,该事件是用以更新购物篮中最新网上购物系统 的商品数量; ◇&nbsp;&nbsp;&nbsp;最新网上购物系统 &nbsp; 继续购物:该事件是关闭窗口; ◇&最新网上购物系统 nbsp;&nbsp;...

    86CMS企业网站系统中英繁三语版 v1.2

    86CMS企业网站系统为智能ASP网站管理程序,适合中小企业自建网站、二次开发使用。本程序具有体积小巧、程序文件结构严谨、界面清爽...一键更改网站状态、修改网站标题、设置网站基本资料和网站系统属性等。管 理 员:管

    功能多的VB窗体属性修改专家

    内容索引:VB源码,系统相关,窗体,属性 VB版窗体属性修改专家,2004开源版本,是一款方便、小巧、实用的窗体调试工具,界面模仿了水晶情缘的窗体属性修改专家,主要是实现了主窗体的选项卡功能,这个程序能自动获得...

    免费超市零售店收银系统

    * 提供商品的分类、季节、颜色、尺码、品牌、单位等商品属性管理 * 快速的信息模糊定位,方便查找 3. 商品销售管理 * 支持单个商品打折和所有销售商品统一打折两种,统一打折的折扣平摊到每个商品身上 * 提供已销售...

    MASM32编程通过WMI获取Windows用户帐户信息的控制台程序,小巧精炼,适合bat调用,重定向输出

    属性 : A--- 数字签名:否 语言 : 中文(简体,中国) 文件版本 : 0.0.0001 beta1 说明 : 通过WMI获取Windows用户帐户信息 版权 : PurpleEndurer 大小 : 5120 字节 5.0 KB MD5 : 2a9443c7db231df9235c0d09e8406a77 SHA1...

    86CMS企业网站管理系统 v2013 sp4

    一键更改网站状态、修改网站标题、设置网站基本资料和网站系统属性等。管 理 员:管理员分为超级管理员或普通管理员,超级管理员具有网站最高权限,普通管理员部分功能被限制。模板显示设置:可设置各栏目显示条数、...

    86CMS企业网站管理系统

    一键更改网站状态、修改网站标题、设置网站基本资料和网站系统属性等。 管 理 员:管理员分为超级管理员或普通管理员,超级管理员具有网站最高权限,普通管理员部分功能被限制。 模板显示设置:可设置各栏目显示条数...

    WeLive免费在线客服系统 v3.2.0 商业版 破解版 特别版V1.0

    Sorry,我知道是要免费提供的,可是我的CSDN老是不够用 此版本能够看到记录,某用户的记录,并删除记录。 一. WeLive介绍: ------------------ WeLive在线客服系统是一个程序小巧, 安装使用简单的网上在线客服...

    ZYCH自由策划婚纱摄影网站管理系统 v02 Build160531

    一键更改网站状态、网站头部风格、修改网站标题、设置网站基本资料和网站系统属性等。栏目导航:对网站导航菜单以及菜单排序等进行管理。安全设置:SQL注入管理,后台可设置SQL防注入参数等,SQL注入记录,可封锁...

    启科PHP淘宝客系统 v1.4.zip

    可添加自主商品,设置网站价格、市场价格、促销价格、促销时间等各种属性,为方便进行SEO优化,亦可设置每个商品展示页标题、关键字、描述信息。 二、文章管理:可设置文章分类、文章列表显示模板、文章内容显示...

    自由策划企业网站管理系统 v1.2.rar

    一键更改网站状态、网站头部风格、修改网站标题、设置网站基本资料和网站系统属性等。 管 理 员:管理员分为超级管理员或普通管理员,超级管理员具有网站最高权限,普通管理员部分功能被限制。 模板显示设置:可设置...

    动软商城系统 v2.5.zip

    巧用活动,提升会员重复购买率 系统支持返券促销、礼品兑换、礼品卡、礼品册、秒杀、限时抢购、满额立减、团购、免运费、赠品、换购、捆绑销售、活动专场等几十种促销活动手段,给客户更多的实惠,增强网站的粘度。...

    FD迷你下载系统中文美化版1.3.1(myand.com)

    汉化者主页:http://www.myand.com内附说明文件:=================================系统要求: PHP , 不需要MySQL功能:简单小巧的下载系统,操作简单,直观,是搞小型下载的不错选择。并且有统计下载点击功能(记录...

    实用小巧的注册表学习工具

    用程序和计算机系统的全部配置信息、系统 和应用程序的初始化信息、应用程序和文档 文键的关联关系、硬件设备说明、状态和属 性以及各种状态信息和数据。注册表中存放 着各种参数,直接控制着Windows的启动、硬 件...

    ZYCH自由策划婚纱摄影网站管理系统 v02 Build160531.zip

    一键更改网站状态、网站头部风格、修改网站标题、设置网站基本资料和网站系统属性等。 栏目导航:对网站导航菜单以及菜单排序等进行管理。 安全设置:SQL注入管理,后台可设置SQL防注入参数等,SQL注入记录,可...

Global site tag (gtag.js) - Google Analytics