读取配置文件
今天工作过程中,看到获取配置文件里面的值研究了一下,算是自己的一点小进步,分享出来,希望帮到大家。
(ssm项目)
java.util.ResourceBundle,这个类的作用就是读取资源属性文件(properties)的。
使用方法:
private static ResourceBundle **BUNDLE** = java.util.ResourceBundle.getBundle("**platform**");
“platform”:是你的配置文件的名称
此时我们的BUNDLE 已经获取到了配置文件里面的东西,但是我们知道资源文件是ISO-8859-1编码,所以我们需要写一个公共方法,将此转化为UTF-8格式,
上一波代码,如下:
/**
* 主要功能:获取配置文件参数
* 注意事项:无
*
* @param name 参数名称
* @return 参数名称对应值
*/
public static String getConfigByName(String name) {
String value = "";
try {
value = new String(BUNDLE.getString(name).getBytes("iso8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return value;
}
String name:就是我们配置文件中的key,此方法返回的就是对应的value值。
下面给大家看下我自己的调用方法:
int fundSupervisionId = Integer.parseInt(ResourceUtil.getConfigByName(“account.fundSupervision”));
我们的fundSupervisionId 得到的值就是20。
路径问题:
在工作过程中,我们的项目有开发环境,生产模境,测试环境,那么就会涉及到有多个.properties结尾的配置文件,也就是上文我项目中的platform.properties。通常这种情况下,我们会建立不同的包存放他们,
这个时候我们就要提到路径问题了,他是如何分辨清哪个是我们正在使用的配置文件。
通常我们的ssm项目是会在pom文件里面通过profile标签来定义我们要使用的配置文件,然后会帮我们编译到classes下面。
编译后:
此时只有一个platform.properties,就是我们指定的那个文件。这个时候我们不要忘了告诉这个文件的名字和路径,也就是我们的context:property-placeholder标签
最后给大家说下classpath*与classpath的区别:
(官方解释就不给大家粘了,说些我自己的理解)
classpath是指WEB-INF文件夹下的classes目录。
classpath:表示仅仅加载第一个classpath路径,而且是它的制定目录下,如果在它的直接目录下在建个包,放入相同名字的文件,classpath是找不到,需要classpath*。
classpath*:指定目录下的所有文件都会扫描。
结束啦,祝大家周末愉快。
(鬼鬼还在加班,幸运的是今天在家办公,开心。)