我们会将一些配置的信息放在。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")读取配置信息