1. 程式人生 > >自定義類在spring中讀取properties配置檔案資訊

自定義類在spring中讀取properties配置檔案資訊

我們會將一些配置的資訊放在。properties檔案中,然後使用${}將配置檔案中的資訊讀取至spring的配置檔案。

那麼我們如何在spring讀取properties檔案呢。

1.首先。我們要先在spring配置檔案中。定義一個專門讀取properties檔案的類.
例:
<bean id="propertyConfigurer" class="org.jstudio.MyPropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:jdbc.properties</value>
<!--要是有多個配置檔案,只需在這裡繼續新增即可 -->
</list>
</property>
</bean>
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

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

public class MyPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {

    private static Map<String, String> propertiesMap;
    // Default as in PropertyPlaceholderConfigurer
    private int springSystemPropertiesMode = SYSTEM_PROPERTIES_MODE_FALLBACK;

    @Override
    public void setSystemPropertiesMode(int systemPropertiesMode) {
        super.setSystemPropertiesMode(systemPropertiesMode);
        springSystemPropertiesMode = systemPropertiesMode;
    }

    @Override
    protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException {
        super.processProperties(beanFactory, props);

        propertiesMap = new HashMap<String, String>();
        for (Object key : props.keySet()) {
            String keyStr = key.toString();
            String valueStr = resolvePlaceholder(keyStr, props, springSystemPropertiesMode);
            propertiesMap.put(keyStr, valueStr);
        }
    }
    public static String getProperty(String name) {
        return propertiesMap.get(name).toString();
    }

}

<context:property-placeholder location="classpath:jdbc.properties" />
然後在程式中通過MyPropertyPlaceholderConfigurer.getProperty(String name)方法獲取配置資訊。
其他一些獲取方式:
1.使用spring el表示式,在介面中使用 <spring:eval value="${icon.css.file.src}"/> 標籤 ;
2.不過建議你用如
@Value("${icon.css.file.src}") 
private String iconClassFile; 
在控制器賦值,再取 
3. 通過PropertiesFactoryBean獲取
    <bean id="configproperties"
          class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations" value="classpath:resource/*.properties"/>
    </bean>
通過
configproperties.getProperty("editor.filemanager.key")讀取配置資訊