Spring配置連接池
在實際開發中,一般都會用Spring配置C3P0連接池,所以下面我就來重點介紹在Spring中如何配置C3P0連接池。
首先引入Spring的配置文件,主要是引入約束:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
</beans>
接着導入Spring的基本jar包,除此之外,還要導入C3P0的jar包:
試想要是以前在Web項目中配置C3P0連接池,勢必會寫這樣的代碼:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driverClass);
dataSource.setJdbcUrl(jdbcUrl);
dataSource.setUser(user);
dataSource.setPassword(password);
而現在我們就可以在Spring配置文件(bean2.xml)中配置C3P0連接池了,即在Spring配置文件中添加如下配置:
<!-- 配置C3P0連接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///spring_lee"></property>
<property name="user" value="root"></property>
<property name="password" value="yezi"></property>
</bean>
現在舉例來演示如何在Spring中配置C3P0連接池了。我的思路是這樣的:創建一個UserService類和一個UserDao類,然後在UserService類裏面調用UserDao類的方法,在UserDao類中使用JdbcTemplate模板類進行數據庫CRUD操作,並且用上C3P0連接池。
先在src目錄下創建一個cn.itcast.c3p0包,並在該包下編寫一個UserDao類。
public class UserDao {
// 在Dao裏面要得到JdbcTemplate對象
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// 添加操作,使用JdbcTemplate模板來實現添加
public void add() {
String sql = "insert into user values(?,?)";
jdbcTemplate.update(sql, "李阿昀", "lee");
}
}
再在該包下編寫一個UserService類,並在UserService類裏面調用UserDao類的add方法。
public class UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add() {
userDao.add();
}
}
那麼Spring核心配置文件就應該像下面這樣配置:
<!-- 配置service和dao以及它們的注入 -->
<bean id="userService" class="cn.itcast.c3p0.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userDao" class="cn.itcast.c3p0.UserDao">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!-- 配置JdbcTemplate模板類的對象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入dataSource,因爲在其源代碼中dataSource屬性有其對應的set方法,故可直接注入 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
從上面的配置可看出:UserDao中注入了JdbcTemplate對象,JdbcTemplate對象裏面又注入了dataSource。
最後再在該包下編寫一個TestDemo單元測試類。
public class TestDemo {
@Test
public void testBook() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean2.xml");
UserService userService = (UserService) context.getBean("userService");
userService.add();
}
}