博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Spring - 06配置数据源

Posted on 2020-11-17 22:43  Kingdomer  阅读(78)  评论(0编辑  收藏  举报

Spring - 06配置数据源

(1)数据源(连接池)的作用

数据源(连接池)是为了提高程序性能出现的。

事先实例化数据源,初始化部分连接资源;

使用连接资源时从数据源中获取;

使用完毕后,将连接资源归还给数据源;

常见的数据源(连接池): DBCP、C3P0、BoneCP、Druid

 

(2)数据源配置使用

(2.1)pom文件添加GAV坐标,引入jar包

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.10.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.43</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

(2.2)测试一: 手动创建 c3p0 数据源

    @Test
    public void test1() throws Exception{
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/dev");
        dataSource.setUser("root");
        dataSource.setPassword("Mysql2020");
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

 (2.3)测试二:手动创建 Druid数据源

    @Test
    public void test2() throws Exception{
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/dev");
        dataSource.setUsername("root");
        dataSource.setPassword("Mysql2020");
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

 

(2.4)测试三:手动创建c3p0数据源(加载properties配置文件)

    @Test
    public void test3() throws Exception{
        // 测试手动创建 c3p0 数据源(加载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.password");

        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

 

 

(2.5)测试四:Spring容器产生数据源对象(DataSource的创建交由Spring容器去完成)

    @Test
    public void test4() throws Exception {
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = app.getBean(DataSource.class);
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
    }
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

 

com.mchange.v2.c3p0.impl.NewProxyConnection@1460a8c0

 

 

引入context的命名空间和约束路径

命令空间: xmlns:context="http://www.springframework.org/schema/context"

约束路径: http://www.springframework.org/schema/context

         http://www.springframework.org/schema/context/spring-context-4.0.xsd