ResourceBundle读取配置文件及路径问题

读取配置文件

今天工作过程中,看到获取配置文件里面的值研究了一下,算是自己的一点小进步,分享出来,希望帮到大家。
(ssm项目)

java.util.ResourceBundle,这个类的作用就是读取资源属性文件(properties)的。

使用方法:

private static ResourceBundle **BUNDLE** = java.util.ResourceBundle.getBundle("**platform**");

“platform”:是你的配置文件的名称
ResourceBundle读取配置文件及路径问题_第1张图片

此时我们的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”));
ResourceBundle读取配置文件及路径问题_第2张图片
我们的fundSupervisionId 得到的值就是20。

路径问题:

在工作过程中,我们的项目有开发环境,生产模境,测试环境,那么就会涉及到有多个.properties结尾的配置文件,也就是上文我项目中的platform.properties。通常这种情况下,我们会建立不同的包存放他们,
ResourceBundle读取配置文件及路径问题_第3张图片
这个时候我们就要提到路径问题了,他是如何分辨清哪个是我们正在使用的配置文件。
通常我们的ssm项目是会在pom文件里面通过profile标签来定义我们要使用的配置文件,然后会帮我们编译到classes下面。

ResourceBundle读取配置文件及路径问题_第4张图片 编译后:
ResourceBundle读取配置文件及路径问题_第5张图片
此时只有一个platform.properties,就是我们指定的那个文件。这个时候我们不要忘了告诉这个文件的名字和路径,也就是我们的context:property-placeholder标签
ResourceBundle读取配置文件及路径问题_第6张图片
最后给大家说下classpath*与classpath的区别:
(官方解释就不给大家粘了,说些我自己的理解)

classpath是指WEB-INF文件夹下的classes目录。
classpath:表示仅仅加载第一个classpath路径,而且是它的制定目录下,如果在它的直接目录下在建个包,放入相同名字的文件,classpath是找不到,需要classpath*。
classpath*:指定目录下的所有文件都会扫描。

结束啦,祝大家周末愉快。
(鬼鬼还在加班,幸运的是今天在家办公,开心。)

你可能感兴趣的:(java)