<!– A Local dataSource Definition using c3p0 connection pool –>
<bean id=”dataSource” class=”com.mchange.v2.c3p0.ComboPooledDataSource” destroy-method=”close”>
<property name=”driverClass” value=”${connection.driver_class}”/>
<property name=”jdbcUrl” value=”${jdbc.connection.url}”/>
<property name=”idleConnectionTestPeriod” value=”${jdbc.pool.c3p0.idle_connection_test_period}” />
<property name=”preferredTestQuery” value=”${jdbc.pool.c3p0.preferred_test_query}” />
<property name=”maxIdleTime” value=”${jdbc.pool.c3p0.max_idle_time}” />
<property name=”properties”>
<props>
<prop key=”user”>${jdbc.connection.username}</prop>
<prop key=”password”>${jdbc.connection.password}</prop>
<prop key=”c3p0.acquire_increment”>${jdbc.pool.c3p0.acquire_increment}</prop>
<prop key=”c3p0.max_size”>${jdbc.pool.c3p0.max_size}</prop>
<prop key=”c3p0.min_size”>${jdbc.pool.c3p0.min_size}</prop>
</props>
</property>
</bean>
<!– Hibernate SessionFactory definition using exposed dataSource –>
<!– hibernate.properties and hibernate.cfg.xml will be loaded on startup –>
<bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
<property name=”dataSource” ref=”dataSource”/>
<property name=”mappingDirectoryLocations”>
<list>
<value>classpath*:persist/system</value>
<value>classpath*:persist/role</value>
<value>classpath*:persist/activity</value>
<value>classpath*:persist/extension</value>
<value>classpath*:persist/user</value>
</list>
</property>
</bean>
connection.driver_class=com.mysql.jdbc.Driver
jdbc.connection.url=jdbc:mysql://192.168.1.251:3307/test
jdbc.connection.username=root
jdbc.connection.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
这样,一段配置变成了3个文件。但是通过重构,我们可以轻松在本地实现数据库切换(修改jdbc.properties),数据连接池切换(修改jdbc.properties和applicationContext.xml),hibernate的Global配置切换等功能。这些功能会提供你更加灵活的调试方式。
3. 整理你的配置文件,不要让它们分散到各处
这一点作为一个最佳实践提出来,主要是因为在项目中,我们可能使用到的技术框架和配置文件是很难预期的。而默认情况下,这些配置文件所存放的位置也不同,比如Spring,往往会把applicationContext.xml文件放在WEB-INF/目录下,而hibernate和struts默认是放在classpath下的。这就为管理配置文件带来了不便。所以,一个比较好的做法,是把我们的配置文件都放在一起。通过存放在不同的目录结构进行管理。例如,把所有的配置文件都放到classpath下。
如果你用maven进行项目管理,maven会为你创建专门存放配置文件的目录(通常是一个叫做resource的目录)。如果不使用maven,我们也可以做类似的工作。以我个人的习惯为例,我喜欢在项目中建立一个叫做conf的source folder来存放所有的配置文件。由于conf是一个source folder,所以它会被类似eclipse这样的IDE自动编译到classpath下,那么我们就可以在这个目录下创建一些package,例如context的package专门存放Spring相关的配置文件,persistent专门存放ORM相关的配置文件,web专门存放表示层的配置文件。而其他的一些配置文件,则直接放到conf根目录下。

