`
hanqunfeng
  • 浏览: 1541852 次
  • 性别: 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>");
}


分享到:
评论

相关推荐

    如何巧用WinPE修复故障系统.docx

    【如何巧用WinPE修复故障系统】 WinPE(Windows Preinstallation Environment)是一种精简版的Windows操作系统,主要用于系统安装、维护和修复。当您的计算机遇到无法正常启动的问题时,WinPE可以通过其内置的工具...

    vb做的小巧小闹钟系统

    【VB制作的小巧小闹钟系统详解】 VB(Visual Basic)是微软公司开发的一种面向对象的、事件驱动的编程语言,它以其简单易学、功能强大的特点,深受初学者和专业开发者的喜爱。本篇文章将深入探讨使用VB编写的这款...

    如何在Win7系统下巧用组策略阻止U盘启动.docx

    _win7 系统下巧用组策略阻止 U 盘启动的方法 在 Win7 系统下,如何巧用组策略阻止 U 盘启动?这篇文章将向您展示如何使用组策略来阻止 U 盘启动,从而提高计算机的安全性。 了解组策略 组策略是 Windows 操作系统...

    文件属性修改器v1.0

    6. **系统属性**:标记文件为系统文件,通常与操作系统核心组件相关。 在某些情况下,如数据恢复、文件整理或测试环境中,可能需要修改文件属性。例如,为了隐藏敏感文件、恢复错误的文件时间戳,或者在特定场景下...

    巧用rundll32快速调用系统功能

    2. **其他系统功能**:可以通过不同的.cpl文件调用不同的系统设置,例如`sysdm.cpl`用于系统属性,`appwiz.cpl`用于添加/删除程序等。这些调用可以帮助用户快速访问和修改系统设置。 3. **运行快捷方式**:`Shell ...

    巧用诺机械实现装配件图零件属性的关联检查和自动更正.pdf

    诺机械是一款专为机械行业设计的软件工具,它在装配件图零件属性的关联检查和自动更正方面具有显著的功能。在二维工程图纸绘制中,通常使用ACAD(AutoCAD)绘制和管理DWG格式的文件,这种格式是二维机械图纸的标准。...

    巧用组策略禁止Win7系统某程序运行.docx

    下面将详细介绍如何巧用组策略来禁止Win7系统中的某程序运行。 1. **什么是组策略?** 组策略是Windows操作系统中的一种管理工具,它允许管理员为用户和计算机设置一系列的配置,包括但不限于软件设置、安全设置、...

    批量文件属性修改v1.0绿色版_批量修改文件属性.rar

    4. **绿色版特性**:作为绿色版软件,"批量文件属性修改v1.0"不需安装,解压即用,且不写入注册表,不会对系统造成任何影响,适合在各种环境中快速部署。 5. **易用性**:配合详细的使用说明(如压缩包内的"使用...

    windowsxp系统中巧查上网累计时间.doc

    5. 在“系统属性”对话框的“选择器”选项卡中,你需要设置过滤条件。在“事件来源”下拉菜单中,选择“RemoteAccess”。这是与远程访问服务相关的事件源,通常与拨号上网有关。 6. 接下来,在“类别”下拉菜单中,...

    巧用“记事本” 让病毒白白运行

    标题提到的"巧用“记事本” 让病毒白白运行"是一种巧妙的策略,可以暂时让病毒失去作用,以便更有效地进行清理。以下是具体的操作步骤和知识点: 首先,我们需要打开命令提示符窗口。这可以通过在“开始”菜单中...

    U盘的巧用,相信对大家很有帮助的

    标题中的“U盘的巧用”意味着我们将探讨U盘在日常使用中可能不为人知但非常实用的功能。U盘作为一种便携式存储设备,已经深入到我们的工作和生活中,而不仅仅是简单地用来传输数据。接下来,我们将深入研究如何巧妙...

    一个小巧精致的CPU监视器

    - **图片框(pictureBox)**:设置背景色为白色,前景色为蓝色,用以绘制CPU使用率的柱状图。 - **定时器(timer)**:设定其Interval属性为100毫秒,并启用它。这确保了每100毫秒更新一次CPU使用率数据。 - **初始化**...

    FATFS文件系统应用程序手册(中文版).pdf

    f_stat函数用于获取文件属性,如文件大小、创建时间等。 12. f_mkdir f_mkdir用于创建一个新目录。 13. f_unlink f_unlink用于删除一个文件。 14. f_chmod f_chmod用于修改文件的权限。 15. f_utime f_utime用于...

    JAVA学生教师信息录入小系统

    - **类与对象**:系统基于面向对象的编程思想,通过定义学生和教师类,封装了各自的属性(如姓名、年龄、科目等)和方法(如添加、删除、修改信息)。 - **继承与多态**:可能使用了继承来扩展基本的人员类,如...

    巧用DOS命令快速清除U盘病毒

    ### 巧用DOS命令快速清除U盘病毒 在日常工作中,U盘作为一种常见的移动存储设备,被广泛用于数据传输与备份。然而,随着技术的发展,U盘也成为了一些恶意程序如病毒、木马等传播的重要途径之一。其中,Autorun.inf...

    巧用Delphi制作溅射屏幕

    ### 巧用Delphi制作溅射屏幕 #### 知识点概述 本文旨在详细介绍如何使用Delphi编程语言创建一个启动时显示的“溅射屏幕”(splash screen)。溅射屏幕通常是一个简短显示的界面,用于展示软件启动时的品牌标识或...

    mp3去除属性

    4. **隐藏属性**:Windows系统中,文件可能有隐藏属性,这可能会导致你在文件管理器中看不到MP3文件。可以通过文件属性设置取消隐藏,右键点击文件,选择“属性”,取消选中“隐藏”选项。 5. **标签去除**:如果...

    巧用WINDOWS快捷键.docx

    本文将重点介绍如何巧用Windows快捷键来启动WPS办公软件。 WPS Office是由金山软件开发的一款集文字处理、电子表格和演示文稿于一体的办公套件,它的三个主要组件——WPS文字、WPS表格和WPS演示,通常以桌面快捷...

    巧用网络命令让网络特殊故障轻松解决定义.pdf

    1. **巧用Sc命令关闭Server服务** 在Windows系统中,Server服务默认开启,允许其他计算机通过隐藏共享访问本地资源,这可能带来安全隐患。当服务窗口无法正常打开,我们无法直接停止Server服务时,可以借助`sc`命令...

    专题资料(2021-2022年)windowsxp系统中巧查上网累计时间.doc

    在弹出的“系统属性”窗口中,切换到“筛选器”选项卡。在这里,我们需要设置筛选条件:在“事件来源”一栏中选择“RemoteAccess”,而在“类别”一栏则选择“全部”。 完成筛选设置后,点击“确定”返回“事件查看...

Global site tag (gtag.js) - Google Analytics