自定義類在spring中讀取properties配置檔案資訊
阿新 • • 發佈:2019-02-04
我們會將一些配置的資訊放在。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")讀取配置資訊