1、一个简单的Demo
1.1、创建conf.xml
<?xml
version=
"1.0"
encoding=
"UTF-8"?>
<!DOCTYPE beans
PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean
id=
"propertyConfigurer"
class=
"org.springframework.beans.factory.config.PropertyPlaceholderConfi gurer">
<!--
使用location属性定义单个配置文件
<property
name=
"location">
<value>classpath:/com/zsw/config/jdbc.properties</value>
</property>
-->
<!--
使用locations属性定义多个配置文件
-->
<property
name=
"locations">
<list>
<value>classpath:/com/zsw/config/jdbc.properties</value>
</list>
</property>
</bean>
<bean
id=
"dataSource"
class=
"org.springframework.jdbc.datasource.DriverManagerDataSource">
<property
name=
"url">
<value>${database.url}</value>
</property>
<property
name=
"driverClassName">
<value>${database.driver}</value>
</property>
<property
name=
"username">
<value>${database.user}</value>
</property>
<property
name=
"password">
<value>${database.password}</value>
</property>
</bean>
</beans>
<!DOCTYPE
<beans>
</beans>
1.2.创建jdbc.properties文件
database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql: //localhost:3306/right?useUnicode=true&autoReconnect=true&characterEncoding=UTF-8
database.user=root
database.password=root
jdbc.pool.c3p0.acquire_increment=2
jdbc.pool.c3p0.max_size=20
jdbc.pool.c3p0.min_size=2
jdbc.pool.c3p0.preferred_test_query='SELECT 1'
jdbc.pool.c3p0.idle_connection_test_period=18000
jdbc.pool.c3p0.max_idle_time=25000
database.url=jdbc:mysql: //localhost:3306/right?useUnicode=true&autoReconnect=true&characterEncoding=UTF-8
database.user=root
database.password=root
jdbc.pool.c3p0.acquire_increment=2
jdbc.pool.c3p0.max_size=20
jdbc.pool.c3p0.min_size=2
jdbc.pool.c3p0.preferred_test_query='SELECT
jdbc.pool.c3p0.idle_connection_test_period=18000
jdbc.pool.c3p0.max_idle_time=25000
1.3.创建Config.java
package
com.zsw.config;
import org.springframework.beans.factory.config.PropertyPlaceholderConfi
gurer;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationC
ontext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public
class
Config
{
public
static
void
main(
String[]
args)
{
XmlBeanFactory
factory
=
new
XmlBeanFactory(
new
FileSystemResource(
"src/com/zsw/config/conf.xml"));
// 如果要在BeanFactory中使用,bean factory post-processor必须手动运行:
PropertyPlaceholderConfi
gurer
cfg
=
new
PropertyPlaceholderConfi
gurer();
cfg.setLocation(
new
FileSystemResource(
"src/com/zsw/config/jdbc.properties"));
cfg.postProcessBeanFactory(factory);
DriverManagerDataSource
dataSource
=
(DriverManagerDataSource)
factory.getBean(
"dataSource");
// System.out.println(dataSource.getDriverClassName());
System.out.println(dataSource.getUsername());
// 注意,ApplicationContext能够自动辨认和应用在其上部署的实现了BeanFactoryPostProcessor 的bean。这就意味着,当使用ApplicationContext的时候应用PropertyPlaceholderConfi gurer会非常的方便。由于这个原因,建议想要使用这个或者其他bean
// factory postprocessor的用户使用ApplicationContext代替BeanFactroy。
ApplicationContext
context
=
new
ClassPathXmlApplicationC
ontext(
"com/zsw/config/conf.xml");
DriverManagerDataSource
dataSource2
=
(DriverManagerDataSource)
context.getBean(
"dataSource");
System.out.println(dataSource2.getUsername());
}
}
import
import
import
import
import
import
public
//
}
2.Spring中PropertyPlaceholderConfi
2.1配置单个Properties文件
<bean id="propertyConfigurerForAna lysis" class="org.springframework.beans.factory.config.PropertyPlaceholderConfi gurer">
<property name="location">
<value>classpath:/spring/include/dbQuery.properties</value>
</property>
</bean>
其中classpath是引用src目录下的文件写法。
2.2 当存在多个Properties文件时,配置就需使用locations了:
<
bean id=
"propertyConfigurer"
class=
"org.springframework.beans.factory.config.PropertyPlaceholderConfi gurer">
<
property name=
"locations">
<
list>
<
value>classpath:/spring/include/jdbc-parms.properties<
/value>
<
value>classpath:/spring/include/base-config.properties<
/value>
<
/list>
<
/property> <
/bean>
2.3、接下来我们要使用多个PropertyPlaceholderConfi
<bean
id=
"propertyConfigurerForPro ject1"
class=
"org.springframework.beans.factory.config.PropertyPlaceholderConfi gurer">
<property
name=
"order"
value=
"1"
/>
<property
name=
"ignoreUnresolvablePlaceh olders"
value=
"true"
/>
<property
name=
"location">
<value>classpath:/spring/include/dbQuery.properties</value>
</property>
</bean>
</bean>
<
bean id=
"propertyConfigurerForPro ject2"
class=
"org.springframework.beans.factory.config.PropertyPlaceholderConfi gurer">
<
property name=
"order"
value=
"2"
/>
<
property name=
"ignoreUnresolvablePlaceh olders"
value=
"true"
/>
<
property name=
"locations">
<
list>
<
value>classpath:/spring/include/jdbc-parms.properties<
/value>
<
value>classpath:/spring/include/base-config.properties<
/value>
<
/list>
<
/property>
< /bean>
< /bean>
其中order属性代表其加载顺序,而ignoreUnresolvablePlaceh