2-3 Spring配置連接池

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();
    }
}
發佈了45 篇原創文章 · 獲贊 31 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章