第三节_spring配置数据源(MySQL)

1、Spring配置数据源

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

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

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

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

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

  • image-20220321150150360

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

打印结果

image-20220321152344048

3.3、弊端

  • 这样使用外部源的数据势必会有很强的耦合性,如果后期程序需要修改,就需要从源码的位置开始,非常的麻烦,直接耦合死了
  • 所以我们可以采用配置文件的方式将这些外部源的数据配置到其中,如果需要修改和读取的时候加载这个配置文件即可

3.4、创建配置文件–解耦合

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

image-20220321155738030

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

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

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

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

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

  • image-20220321161430659

  • <!-- 外部文件的全路径名获取- -->
    <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的信息

image-20220321171709765

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

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

  • 命名空间:xmlns:context=“http://www.springframework.org/schema/context”

  • 约束路径:

  • http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd
    
  • image-20220321170245129

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、测试

image-20220321171449077

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司(Oracle)。自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 开源与跨平台 MySQL遵循GPL开源协议,这意味着任何人都可以免费下载、使用和修改其源代码。这种开放性促进了广泛的社区支持和第三方插件、工具的发展。此外,MySQL支持多种操作系统,包括Windows、Linux、macOS、Solaris等,确保了其在不同环境下的兼容性和部署灵活性。 关系型模型与SQL支持 MySQL基于关系型数据库模型,数据以表格形式组织,并通过预定义的键(如主键、外键)在表之间建立关联。它完全支持结构化查询语言(SQL),允许用户进行数据查询、插入、更新、删除、创建和管理数据库结构等操作。SQL标准的广泛支持使得MySQL易于学习,且与其他关系型数据库系统有良好的互操作性。 存储引擎 MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY等,每种引擎都有特定的优势和适用场景。例如,InnoDB提供事务安全、行级锁定和外键约束,适合处理高并发事务性的应用;MyISAM则更侧重于读取密集型操作,提供全文索引支持,适用于读多写少的场景。这种多引擎架构使得MySQL能够适应不同业务需求,提供高度定制化的存储解决方案。 性能与可扩展性 MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发访问的需求。 安全性与管理工具 MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统 MySQL拥有庞大的开发者社区和丰富的第三方插件、库、中间件支持,提供了丰富的文档、教程、论坛以及专业服务,极大地简化了开发、运维和故障排查过程。 关键组件与日志 系统数据库 MySQL内部包含几个特殊的系统数据库,如: information_schema:提供关于所有数据库、表、列、索引等元数据信息,是查询数据库结构的标准接口。 mysql:存储MySQL自身的系统信息,如用户权限、服务器配置、事件调度等。 performance_schema:自MySQL 5.5版本引入,用于收集服务器性能数据,帮助诊断和优化系统性能。 test(非必要):默认提供的测试数据库,通常用于学习和实验,生产环境中可考虑删除。 sys(自MySQL 5.7版本):提供更易用的视图来访问performance_schema中的信息,简化性能分析工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值