3、Spring配置数据源

1、Spring配置数据源

1.1、spring:数据源,连接池的作用

  • 数据源(连接池)是提高程序性能

  • 如出现的事先实例化数据源,初始化部分连接资源使用

  • 连接资源时从数据源中获取

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

2、Spring配置数据源-开发步骤

2.1、导入数据源的坐标和数据库的驱动坐标

2.2、创建我们数据源的对象

2.3、设置数据源的基本连接数据(root,psw,最大连接数...)

2.4、使用数据源获取链接资源和归还资源

3、Spring配置数据源--准备开发

3.1、导入需要的依赖环境

mysqljdbcc3p0数据源druid数据源单元测试类

<dependencies>
        <!-- 导入Spring的依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.16</version>
        </dependency>
        <!-- 导入mysql数据库 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <!-- c3p0数据源 -->
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</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.13</version>
        </dependency>
    </dependencies>

3.2、配置数据源连接数据库

// 测试数据源连接mysql数据库
public class c3p0Test {
    @Test
    public void testc3p0() throws PropertyVetoException, SQLException {
        // 创建数据源的对象
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        // 配置数据源
        // 配置驱动
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        // 设置url地址
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/week9");
        // 设置我的账号和密码
        dataSource.setUser("root");
        dataSource.setPassword("010115");
        Connection connection = dataSource.getConnection();
        // 打印一下地址
        System.out.println("数据库连接成功!"+connection);
        // 归还数据源
        connection.close();
    }
}

打印结果

3.3、弊端

  • 这样使用外部源的数据势必会有很强的耦合性,如果后期程序需要修改,就需要从源码的位置开始,非常的麻烦,直接耦合死了

  • 所以我们可以采用配置文件的方式将这些外部源的数据配置到其中,如果需要修改和读取的时候加载这个配置文件即可

3.4、创建配置文件--解耦合(jdbc.properties)

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/week9
jdbc.user = root
jdbc.password = 010115

3.5、读取配置文件,配置数据源信息

@Test   // 配置文件的方式存值取值
public void newc3P0() throws PropertyVetoException, SQLException {
    // 加载配置文件--参数是我们配置文件的前缀(jdbc.properties)
    ResourceBundle db = ResourceBundle.getBundle("jdbc");
    // 读取参数--getString()
    String driver = db.getString("jdbc.driver");
    String url = db.getString("jdbc.url");
    String user = db.getString("jdbc.user");
    String password = db.getString("jdbc.password");
    // 读取到了以后赋值进去
    // 创建数据源的对象
    ComboPooledDataSource dataSource = new ComboPooledDataSource();
    // 配置数据源
    // 配置驱动
    dataSource.setDriverClass(driver);
    // 设置url地址
    dataSource.setJdbcUrl(url);
    // 设置我的账号和密码
    dataSource.setUser(user);
    dataSource.setPassword(password);
    Connection connection = dataSource.getConnection();
    // 打印一下地址
    System.out.println("数据库连接成功!"+connection);
    // 归还数据源
    connection.close();
}

4、Spring配置文件--将数据源对象的创建方式交给Spring来创建

4.1、创建我们的配置文件xml

  • 数据源对象本身我们是引入的第三方,所以我们直接在配置文件,通过Bean在容器中注册这个对象就行

  • 不需要dao,service,Controller层的创建

  • 第三方引用关于class全路径名的获取

  • <!-- 外部文件的全路径名获取- -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 配置属性 -->
        <!-- 驱动 -->
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <!-- url -->
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/week9"></property>
        <!-- 用户名 -->
        <property name="user" value="root"></property>
        <!-- 密码 -->
        <property name="password" value="010115"></property>
    </bean>

4.2、创建测试的方法进行测试

  • // 通过Spring容器创建我们的ComboPooledDataSource对象
    @Test
    public void SpringJDBCTest() throws SQLException {
        // 加载配置文件获取到我们的ComboPooledDataSource对象
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        // getBean获取到容器中的对象
        ComboPooledDataSource dataSource = app.getBean(ComboPooledDataSource.class);
        Connection connection = dataSource.getConnection();
        // 打印一下地址
        System.out.println(connection);
    }

4.3、些许的问题,还是有耦合性,怎么解决?

5、Spring配置文件--xml读取properties的信息

将我们properties配置文件注入到我们的xml文件当中

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

5.2、引入properties配置文件

  • classpath:类加载路径下(resources)的jdbc.properties

<!-- 属性加载器-property-placeholder -->
<context:property-placeholder location="classpath:jdbc.properties"/>
  • 将properties的值注入到Bean对象中

  • <!-- 如何将properties的值放在value中- EL表达式 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 配置属性 -->
        <!-- 驱动 -->
        <property name="driverClass" value="${jdbc.driver}"></property>
        <!-- url -->
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <!-- 用户名 -->
        <property name="user" value="${jdbc.user}"></property>
        <!-- 密码 -->
        <property name="password" value="${jdbc.password}"></property>
    </bean>

5.3、测试

posted @   澜璨  阅读(297)  评论(0编辑  收藏  举报
编辑推荐:
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
阅读排行:
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析
· 上周热点回顾(3.24-3.30)

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示