spring引入数据源

74 阅读2分钟

c3p0和Druid数据源

①普通加载方式(1、2)

1、c3p0:

1、在resources目录下编写applicationContext.xml文件 在这里插入图片描述

在这里插入图片描述

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!--        注入参数-->
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property><!--name是上面class ComboPooledDataSource包的set方法 Druid和c3p0对应的不一样 -->
        <property name="jdbcUrl" value="jdbc:mysql://47.100.248.249:3306/zxDB"></property>
        <property name="user" value="zou_web"></property>
        <property name="password" value="zou_123456"></property>
    </bean>

2、编写一个DataSourcetest.java

@Test //测试手动创建 c3p0 数据源

public void test1() throws Exception {

    ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
    comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
    comboPooledDataSource.setJdbcUrl("jdbc:mysql://47.100.248.249:3306/zxDB");
    comboPooledDataSource.setUser("zou_web");
    comboPooledDataSource.setPassword("zou_123456");
    Connection connection = comboPooledDataSource.getConnection();

    System.out.println(connection);
    connection.close();

}

在这里插入图片描述

2、Druid

applicationcontext.xml文件

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="Url" value="jdbc:mysql://47.100.248.249:3306/zxDB"></property>
        <property name="username" value="zou_web"></property>
        <property name="password" value="zou_123456"></property>
    </bean>

@Test //测试手动创建 druid 数据源

public void test2() throws Exception {

    DruidDataSource druidDataSource = new DruidDataSource();
    druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
    druidDataSource.setUrl("jdbc:mysql://47.100.248.249:3306/zxDB");
    druidDataSource.setUsername("zou_web");
    druidDataSource.setPassword("zou_123456");
    Connection connection = druidDataSource.getConnection();

    System.out.println(connection);
    connection.close();

}

②//测试手动创建 c3p0 数据源(加载配置文件信息jdbc.properties) @Test //测试手动创建 c3p0 数据源(加载配置文件信息jdbc.properties)

public void test3() throws Exception {

// 用ResourceBundle方法加载配置文件 自带后缀properties ResourceBundle rb = ResourceBundle.getBundle("jdbc"); String driver = rb.getString("jdbc.driver"); String url = rb.getString("jdbc.url"); String username = rb.getString("jdbc.username"); String password = rb.getString("jdbc.mysql.password"); //创建数据源对象 设置连接参数

    ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
    comboPooledDataSource.setDriverClass(driver);
    comboPooledDataSource.setJdbcUrl(url);
    comboPooledDataSource.setUser(username);
    comboPooledDataSource.setPassword(password);
    Connection connection = comboPooledDataSource.getConnection();

    System.out.println(connection);
    connection.close();

}

在这里插入图片描述

@Test //测试手动创建 druid 数据源 加载配置文件

public void test4() throws Exception {


    //        用ResourceBundle方法加载配置文件  自带后缀properties
    ResourceBundle rb = ResourceBundle.getBundle("jdbc");
    String driver = rb.getString("jdbc.driver");
    String url = rb.getString("jdbc.url");
    String username = rb.getString("jdbc.username");
    String password = rb.getString("jdbc.mysql.password");
    //创建数据源对象 设置连接参数


    DruidDataSource druidDataSource = new DruidDataSource();
    druidDataSource.setDriverClassName(driver);
    druidDataSource.setUrl(url);
    druidDataSource.setUsername(username);
    druidDataSource.setPassword(password);
    Connection connection = druidDataSource.getConnection();

    System.out.println(connection);
    connection.close();

}

在这里插入图片描述

2、## 加载外部配置文件properties 需要先引入头部context 先

<context:property-placeholder location="classpath*:jdbc.properties"/>

在这里插入图片描述

然后加入context的引入

xmlns:context="http://www.springframework.org/schema/context"
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        

在这里插入图片描述

  1. 如果是使用c3p0: 在这里插入图片描述
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <!--        注入参数-->
    <property name="driverClass" value="${jdbc.driver}"></property>
    <property name="jdbcUrl" value="${jdbc.url}"></property>
    <property name="user" value="${jdbc.username}"></property>
    <property name="password" value="${jdbc.password}"></property>
</bean>

代表的test类

在这里插入图片描述

2如果是Druid的话

applicationcontext.xml

<!--    druid-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="Url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

在这里插入图片描述 对应的测试类 在这里插入图片描述

附applicationcontext.xml 和DataSourcetest.jsva

applicationcontext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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
        ">

    <!--    先配置数据源-->
    <!--    spring配置加载文件c3p0 com.mchange.v2.c3p0.ComboPooledDataSource-  druid  com.alibaba.druid.pool.DruidDataSource-->
<!--        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">-->
<!--    &lt;!&ndash;        注入参数&ndash;&gt;-->
<!--            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>&lt;!&ndash;name是上面class ComboPooledDataSource包的set方法 Druidc3p0对应的不一样 &ndash;&gt;-->
<!--            <property name="jdbcUrl" value="jdbc:mysql://47.100.248.249:3306/zxDB"></property>-->
<!--            <property name="user" value="zou_web"></property>-->
<!--            <property name="password" value="zou_123456"></property>-->
<!--        </bean>-->

    <!--    druid-->
<!--        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">-->
<!--            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>-->
<!--            <property name="Url" value="jdbc:mysql://47.100.248.249:3306/zxDB"></property>-->
<!--            <property name="username" value="zou_web"></property>-->
<!--            <property name="password" value="zou_123456"></property>-->
<!--        </bean>-->


    <!--    加载外部配置文件properties  需要先引入头部context -->

    <context:property-placeholder location="classpath*:jdbc.properties"/>


<!--        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">-->
<!--            &lt;!&ndash;        注入参数&ndash;&gt;-->
<!--            <property name="driverClass" value="${jdbc.driver}"></property>-->
<!--            <property name="jdbcUrl" value="${jdbc.url}"></property>-->
<!--            <property name="user" value="${jdbc.username}"></property>-->
<!--            <property name="password" value="${jdbc.password}"></property>-->
<!--        </bean>-->

    <!--    druid-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="Url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
</beans>

DataSourceTest

package com.blog.test;

import com.alibaba.druid.pool.DruidDataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.sql.DataSource;
import java.sql.Connection;
import java.util.ResourceBundle;

public class DataSourceTest {

    @Test
    //测试手动创建 c3p0 数据源
    public void test1() throws Exception {

        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
        comboPooledDataSource.setJdbcUrl("jdbc:mysql://47.100.248.249:3306/zxDB");
        comboPooledDataSource.setUser("zou_web");
        comboPooledDataSource.setPassword("zou_123456");
        Connection connection = comboPooledDataSource.getConnection();

        System.out.println(connection);
        connection.close();

    }


    @Test
    //测试手动创建 c3p0 数据源(加载配置文件信息jdbc.properties)
    public void test3() throws Exception {

//        用ResourceBundle方法加载配置文件  自带后缀properties
        ResourceBundle rb = ResourceBundle.getBundle("jdbc");
        String driver = rb.getString("jdbc.driver");
        String url = rb.getString("jdbc.url");
        String username = rb.getString("jdbc.username");
        String password = rb.getString("jdbc.mysql.password");
        //创建数据源对象 设置连接参数

        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        comboPooledDataSource.setDriverClass(driver);
        comboPooledDataSource.setJdbcUrl(url);
        comboPooledDataSource.setUser(username);
        comboPooledDataSource.setPassword(password);
        Connection connection = comboPooledDataSource.getConnection();

        System.out.println(connection);
        connection.close();

    }



    @Test
    //测试手动创建 druid 数据源
    public void test2() throws Exception {

        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        druidDataSource.setUrl("jdbc:mysql://47.100.248.249:3306/zxDB");
        druidDataSource.setUsername("zou_web");
        druidDataSource.setPassword("zou_123456");
        Connection connection = druidDataSource.getConnection();

        System.out.println(connection);
        connection.close();

    }




    @Test
    //测试手动创建 druid 数据源  加载配置文件
    public void test4() throws Exception {


        //        用ResourceBundle方法加载配置文件  自带后缀properties
        ResourceBundle rb = ResourceBundle.getBundle("jdbc");
        String driver = rb.getString("jdbc.driver");
        String url = rb.getString("jdbc.url");
        String username = rb.getString("jdbc.username");
        String password = rb.getString("jdbc.mysql.password");
        //创建数据源对象 设置连接参数


        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driver);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        Connection connection = druidDataSource.getConnection();

        System.out.println(connection);
        connection.close();

    }


    @Test
    //测试配置容器Spring 产生数据源 c3p0对象
    public void test5() throws Exception {

        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = app.getBean(DataSource.class);
        Connection connection = dataSource.getConnection();
        System.out.println(connection+"=========");
        connection.close();


    }


    @Test
    //测试配置容器Spring 产生数据源 druid对象
    public void test6() throws Exception {

        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = app.getBean(DataSource.class);
        Connection connection = dataSource.getConnection();
        System.out.println(connection+"===druid");
        connection.close();


    }

}