获取Spring项目配置文件元素

Posted yzuzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取Spring项目配置文件元素相关的知识,希望对你有一定的参考价值。

 在开发中有时候要获取配置文件里的值,通常可以利用如下方式来读取:

public class PropertyUtil {
    
    private static Properties p = new Properties();
    
    static {
        init("config.properties");
    }
    
    /**
     * read config file and set vlaue to Properties p
     * @param propertyFileName 文件名
     */
    protected static void init(String propertyFileName)
    {
        InputStream in = null;
        try {
            in = PropertyUtil.class.getClassLoader().getResourceAsStream(propertyFileName);
            if (in != null){
                p.load(in);
            }
        } catch (IOException e){
            System.err.println("load ["+propertyFileName+"] error!"+e.getMessage());
        } finally {
            IOUtils.closeQuietly(in);
        }
    }
    
    public static String getValue(String key)
    {
        String value = null;
        try {
            value = p.getProperty(key);
        } catch (Exception e) {
            //
        }
        return value;
    }
}

 

下面推荐一个利用PropertyPlaceholderConfigurer来获取配置文件元素的方法:

package com.spring.common.util;

import java.util.HashMap;
import java.util.Map;import java.util.Properties;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

public final class PropertiesUtil extends PropertyPlaceholderConfigurer {
    
    private static Map<String, String> PropertiesMap;
    private static Properties properties = new Properties();
    
    @Override
    protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, 
            Properties props) throws BeansException {
        super.processProperties(beanFactoryToProcess, props);
        properties.putAll(props);
        PropertiesMap = new HashMap<String, String>();
        for (Object key : props.keySet()) {
            String keyStr = (String) key;
            String value = props.getProperty(keyStr);
            PropertiesMap.put(keyStr, value);
        }
    }

    /**
     * Get a value based on key , if key does not exist , null is returned
     * @param key
     * @return
     */
    public static String getString(String key) {
        try {
            return PropertiesMap.get(key);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 根据key获取值
     * 
     * @param key
     * @return
     */
    public static int getInt(String key) {
        return Integer.parseInt(PropertiesMap.get(key));
    }
    
    /**
     * 根据key获取值
     * 
     * @param key
     * @param defaultValue
     * @return
     */
    public static int getInt(String key, int defaultValue) {
        String value = PropertiesMap.get(key);
        if (StringUtils.isBlank(value)) {
            return defaultValue;
        }
        return Integer.parseInt(value);
    }
    
    public static boolean getBoolean(String key) {
        return getBoolean(key, false);
    }

    /**
     * 根据key获取值
     * @param key
     * @param defaultValue
     * @return
     */
    public static boolean getBoolean(String key, boolean defaultValue) {
        String value = PropertiesMap.get(key);
        if (StringUtils.isBlank(value)) {
            return defaultValue;
        }
        return Boolean.parseBoolean(value);
    }
    
}

 

需要在spring.xml文件里引入一下配置文件,注意类名全路径不要写错:

    <!-- 引入属性配置文件 -->
    <bean class="com.spring.common.util.PropertiesUtil">
        <property name="locations">
            <list>
                <value>classpath:config.properties</value>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>

 

在需要的地方调用下getString方法:

String  password = PropertiesUtil.getString("password");

 

以上是关于获取Spring项目配置文件元素的主要内容,如果未能解决你的问题,请参考以下文章

spring 国际化 js怎么设置

监听器如何获取Spring配置文件(加载生成Spring容器)

监听器如何获取Spring配置文件

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

spring boot项目中使用@Value获取yml配置文件中的属性值不对的问题。

Spring Security:如何获取自动渲染的登录页面代码?