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();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38793958/article/details/80338059
今日推荐