档案文件properties的使用

在springMVC中经常会看到各种后缀名为properties的档案文件,档案文件中的内容是一行一行的键值对,比如:
CONTEXT = com.warlock.mvc等等,有点类似一个常量库存区。在某些常量的值需要修改的时候直接修改这个properties文件中对应的配置就可以了,减少了很多去代码中查找的过程。比如在改变部署环境的时候可能需要修改数据库的地址,用户名等参数,如此一来就可以在properties文件中修改即可,而不需要深入到复杂的代码中去寻找硬编码的URL,USERNAME等等的东西。当然说去代码中寻找已经够土的了,在使用了依赖注入后,更多的有关常量的初始化都是写在配置文件中,那么properties文件的作用是啥呢?哈哈,就是进一步的将xml中可能使用到的一些常量挪到统一的档案文件中,而不是满布于xml中。

比如有这样一个类叫MySQLManager,在这个类中包含一些对于数据库的基础操作,当然包含这样几个属性:

readURL writeURL userName password 。写好包含诸参数初始化的构造函数(注入口)弄好之后,可以弄个bean给这几个类注入参数了。本地环境下时bean可能写成这样:


<bean id="mySQLmanagerConfig" class="com.warlock.mvc.MySQLmanager">
        <constructor-arg index="0" value="jdbc:mysql://localhost/CoreBase"/>
        <constructor-arg index="1" value="jdbc:mysql://localhost/CoreBase"/>
        <constructor-arg index="2" value="root"/>
        <constructor-arg index="3" value=""/>
    </bean>

然后如果这个应用需要部署到云端的话,以SAE为例,可能需要修改bean成这样:

<bean id="mySQLmanagerConfig" class="com.warlock.mvc.MySQLmanager">
        <constructor-arg index="0" value="jdbc:mysql://r.rdc.sae.sina.com.cn:3307/CoreBase"/>
        <constructor-arg index="1" value="jdbc:mysql://w.rdc.sae.sina.com.cn:3307/CoreBase"/>
        <constructor-arg index="2" value="warlock"/>
        <constructor-arg index="3" value="veryLongPasswordForWarlock"/>
    </bean>

这样一来在需要更新布包的时候就将bean改成SAE的参数,mvn clean install , 上传war包。在本地进行调试的时候再找到这个bean,再将参数修改成本地的bean。

那么使用properties档案文件之后是咋搞的呢?
先弄两个properties文件,一个称为localConfig.properties,另外一个是sinaConfig.properties。在两个档案文件中写好各自使用的参数,比如localConfig.properties中的内容应该包含这些内容:
READ_URL = jdbc:mysql://localhost/CoreBase
WRITE_URL = jdbc:mysql://localhost/CoreBase
USERNAME = root
PASSWORD = 

然后在之前注入MySQLManager的bean中采用properties文件中的配置,bean写成:

<bean id="mySQLmanagerConfig" class="com.warlock.mvc.MySQLmanager">
        <constructor-arg index="0" value="${READ_URL}"/>
        <constructor-arg index="1" value="${WRITE_URL}"/>
        <constructor-arg index="2" value="${USERNAME}"/>
        <constructor-arg index="3" value="${PASSWORD}"/>
    </bean>

再加入一段指定应该使用哪个properties的bean就可以使用了,比如:

<bean id="fileConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
                <value>classpath:sinaConfig.properties</value>
        </property>
    </bean>

如此一来,在改变部署环境下的MySQLManager配置的时候,只需要稍微动一下这个PropertyPlaceholderConfigurer的注入参数为对应的properties文件就可以了。

进一步的,如果我们把这两个properties弄得更好使用一点,修改成这样:

<bean id="fileConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
                <value>classpath:${environment}Config.properties</value>
        </property>
    </bean>

也就是具体使用哪个Config文件,是由这个名为environment的变量来控制的,如此一来,在执行maven命令的时候只需要传入这个参数就可以了,比如,生成适用于SAE的war包可以用这个命令:
mvn install -Denvironment=sina

而在本地启动jetty的时候,就可以使用这个命令:
mvm jetty:run -Denvironment=local

妈妈再也不用担心我找不到配置了!
26th Sep

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值