摘要:本文
深入探讨了配置化文件(即.properties)的普遍应用方式
。包括了Spring、一般的、远程的三种使用方案。
关键词:.properties, Spring, Disconf, Java
解决问题:如何正确使用.properties配置文件。
若是有其他代码需要此Spring属性配置,
将Spring配置中的属性值设置迁移到外部的属性文件中,是必需的操作,这也可以使Spring配置文件更易读。在这里
我们
不仅要讨论Spring的外部化配置,还要深入探讨配置化文件(即.properties)的普遍应用方式。
这样就可以在不用重新打包和重新部署应用的情况下,配置这些属性值
。从
开发过程来看,将通用变量提出,并可配,也是写出高可读、低耦合代码的必然途径。
从结果来看,这对于灵活性地进行测试、运维工作,是非常有好处的。在开发时,我们尽量把部署时需要修改的信息提出放在文件中,方便部署人员部署。一个大型系统中,多个项目有相同的配置信息,则部署人员部署时需要对多个不同的文件修改相同的信息,这不是好的代码结构,麻烦部署人员的同时,也增加了犯错的可能性。下面,就是针对以上问题的解决方案。
一、原先的Spring配置
下面是普通的Spring配置文件。可以看出,这里的value可以提出,以供其它代码重用。
二、经过改良后的配置
1、Spring配置
下面是引入了两个配置文件db.properties和solr.properties后的Spring配置文件。
<value>classpath:db.propertiesvalue>
<value>classpath:solr.propertiesvalue>
以下是配置文件
db.properties
db.ip
=
192
.
8
.
125
.
201
db.name = aitanjupt
db.url = jdbc : mysql : //${db.ip}:3306/${db.name}
db.username = root
db.password = 1234
db.name = aitanjupt
db.url = jdbc : mysql : //${db.ip}:3306/${db.name}
db.username = root
db.password = 1234
配置文件solr.properties
solr.url
=
http
:
//192.8.125.30:8983/solr/core0
2、使用@Value注解来获取配置
属性占位符配置的作用不限于XML中的Bean属性配置。还可以用它来配置@Value注解的属性。
public
class
IndexHandler
{
@Value( "${solr.url}" )
private String solrUrl;
}
{
@Value( "${solr.url}" )
private String solrUrl;
}
然而这种方式使用起来并不十分方便。你需要先在类里面申明一个属性。
3、使用ResourceBundle来读取配置
-
privatestaticString myValue; static{ try{ ResourceBundle bundle =ResourceBundle .getBundle(PROPERTIES_FILE_NAME,Locale.ENGLISH);//PROPERTIES_FILE_NAME可以是solr.properties文件名的一部分:"solr" myValue = bundle.getString(MY_VALUE_KEY).trim();//MY_VALUE_KEY可以是solr.url } catch(Exception ex){ System.err.println("[Property]:Can't Load property.properties"); myValue ="default value"; System.out.println("myValue will use the default value: "+ myValue); } }
-
这种方式使用起来比较方便。
三、
远程
读取配置文件
只是通过以上方式来管理配置,尚觉不足。在一个比较大的系统中,很有可能多个子系统都需要使用相同配置的情况,当然,你可以将这些配置记入数据库中并提供接口,自己管理起来。但是如果需要实时地将配置信息推送到不同的子系统中,情况就更将复杂了。
可以
采用
Disconf作为分布式配置管理平台,D
isconf是一套完整的基于zookeeper的分布式配置统一解决方案。支持配置(配置项+配置文件)的分布式化管理,配置发布统一化,极
简的使用方式(注解式编程 或 XML代码无代码侵入模式),
低侵入性或无侵入性、强兼容性,
需要Spring编程环境
。
其依赖于:
Mysql、
Tomcat、
Nginx、
zookeeeper
、
Redis
。
Disconf的缺陷在于安全问题,无需帐号登陆就可以下拉、下载各Properties。
更多详细介绍请移步 https://github.com/knightliao/disconf
来自王安琪