一、propertyPlaceholderConfigurer读取配置文件
1. PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是 BeanFactoryPostProcessor接口的一个实现。PropertyPlaceholderConfigurer可以将上下文(配置文 件)中的属性值放在另一个单独的标准java Properties文件中去。在XML文件中用${key}替换指定的properties文件中的值。这样的话,只需要对properties文件进 行修改,而不用对xml配置文件进行修改。
2.在Spring中,使用PropertyPlaceholderConfigurer可以在XML配置文件中加入外部属性文件,当然也可以指定外部文件的编码,如:
conf/jdbc.properties
UTF-8
3.PropertyPlaceholderConfigurer起的作用就是将占位符指向的数据库配置信息放在bean中定义的工具。
4.查看源代码,可以发现,locations属性定义在PropertyPlaceholderConfigurer的祖父类 PropertiesLoaderSupport中,而location只有 setter方法。类似于这样的配置,在spring的源程序中很常见的。
PropertyPlaceholderConfigurer如果在指定的Properties文件中找不到你想使用的属性,它还会在Java的System类属性中查找。
我们可以通过System.setProperty(key, value)或者java中通过-Dnamevalue来给Spring配置文件传递参数。
classpath:conf/jdbc.properties classpath:conf/config.properties classpath:conf/server.properties
package com.slp.util;
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 CustomizedPropertyConfigurer extends PropertyPlaceholderConfigurer {
private static Map ctxPropMap;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
ctxPropMap = new HashMap();
for (Object key : props.keySet()){
String keyStr = key.toString();
String value = String.valueOf(props.get(keyStr));
ctxPropMap.put(keyStr,value);
}
}
public static String getCtxProp(String name) {
return ctxPropMap.get(name);
}
public static Map getCtxPropMap() {
return ctxPropMap;
}
}
//使用的时候如下即可
CustomizedPropertyConfigurer.getCtxProp("xxx")
二、配置数据库资源
/WEB-INF/hibernate.properties
/WEB-INF/uploadDir.properties
hibernate.properties
hibernate.beanid=hibernate
hibernate.name=\u7CFB\u7EDF\u9ED8\u8BA4\u6570\u636E\u6E90
hibernate.driverClass=oracle.jdbc.driver.OracleDriver
hibernate.default_schema=MONITMEAS
hibernate.username=MONITMEAS
hibernate.password=MONITMEAS
hibernate.jdbcUrl=jdbc:oracle:thin:@192.168.1.100:1521:orcl
hibernate.dialect=org.hibernate.dialect.OracleDialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.hbm2ddl.auto=update
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.cache.use_query_cache=true
hibernate.packages.to.scan.one=com.base.po
hibernate.packages.to.scan.two=com.base.po.*
mysql.driverClass=com.mysql.jdbc.Driver
mysql.jdbcUrl=jdbc:mysql://192.168.1.161:3306/platform?useUnicode=true&characterEncoding=utf-8&useOldAliasMetadataBehavior=true
mysql.userName=PLATFORM
mysql.password=PLATFORM
uploadDir.properties
upload.base_dir=F\:\\BDCUpload