java中读取服务器配置文件方法

来源:互联网 发布:exescope软件下载 编辑:程序博客网 时间:2024/05/30 23:02

自定义配置文件

配置文件名为:project.properties,内容如下:

1
2
3
# 是否开启逻辑删除
del.filter.on=false
domain=http://www.366go.cn/

修改Spring配置文件

之前代码:

1
2
3
4
5
6
7
8
<beanid="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <propertyname="locations">
        <list>
            <value>classpath:dbinfo.properties</value>
        </list>
    </property>
</bean>

修改后的配置文件

1
2
3
4
5
6
7
8
9
<beanid="propertyConfigurer"
    class="com.hisun.core.util.CustomizedPropertyPlaceholderConfigurer">
    <propertyname="locations">
        <list>
            <value>classpath:dbinfo.properties</value>
            <value>classpath:project.properties</value>
        </list>
    </property>
</bean>

加入了classpath:project.properties,其为自定义的配置文件
将PropertyPlaceholderConfigurer类修改为自定义类CustomizedPropertyPlaceholderConfigurer,
PropertyPlaceholderConfigurer类的具体作用可以查资料这块儿不做详细介绍

定义CustomizedPropertyPlaceholderConfigurer类

类的具体内容为下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Properties;
 
importorg.springframework.beans.BeansException;
importorg.springframework.beans.factory.config.ConfigurableListableBeanFactory;
importorg.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
 
publicclass CustomizedPropertyPlaceholderConfigurer extendsPropertyPlaceholderConfigurer {
    privatestatic Map ctxPropertiesMap;
 
    @Override
    protectedvoid processProperties(ConfigurableListableBeanFactory beanFactoryToProcess,
                                     Properties props)throws BeansException {
        super.processProperties(beanFactoryToProcess, props);
        ctxPropertiesMap =new HashMap();
        for(Object key : props.keySet()) {
            String keyStr = key.toString();
            String value = props.getProperty(keyStr);
            ctxPropertiesMap.put(keyStr, value);
        }
    }
    publicstatic Object getContextProperty(String name) {
        returnctxPropertiesMap.get(name);
    }
}

定义获取配置文件中值的类SpringPropertiesUtil

类的具体内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
importorg.springframework.beans.BeansException;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.ApplicationContextAware;
importorg.springframework.stereotype.Component;
 
/**
 * Spring-PropertiesUtil工具类 -获取属性值
 *
 */
@Component
publicclass SpringPropertiesUtil implementsApplicationContextAware {
    publicstatic final String KEY = "propertyConfigurer";
    privatestatic ApplicationContext applicationContext;
 
    publicvoid setApplicationContext(ApplicationContext applicationContext)
            throwsBeansException {
        SpringPropertiesUtil.applicationContext = applicationContext;
    }
 
    publicstatic ApplicationContext getApplicationContext() {
        returnapplicationContext;
    }
 
    /**
     * 获取配置文件中的内容
     *
     * @param keyName
     * @return
     */
    publicstatic String parseStr(String keyName) {
        CustomizedPropertyPlaceholderConfigurer cp = (CustomizedPropertyPlaceholderConfigurer) applicationContext
                .getBean(KEY);
        returncp.getContextProperty(keyName).toString();
    }
 
    /**
     * 获取配置文件中的内容
     *
     * @param keyName
     * @return
     */
    publicstatic int parseInt(String keyName) {
        CustomizedPropertyPlaceholderConfigurer cp = (CustomizedPropertyPlaceholderConfigurer) applicationContext
                .getBean(KEY);
        returnInteger.parseInt(cp.getContextProperty(keyName).toString());
    }
 
    /**
     * 获取配置文件中的内容
     *
     * @param keyName
     * @return
     */
    publicstatic double parseDouble(String keyName) {
        CustomizedPropertyPlaceholderConfigurer cp = (CustomizedPropertyPlaceholderConfigurer) applicationContext
                .getBean(KEY);
        returnDouble.parseDouble(cp.getContextProperty(keyName).toString());
    }
}

这样,在项目当中就能够方便快速的获取properties文件中配置的参数
如SpringPropertiesUtil.parseStr(“content”)

0 0