文章目录

  • 一般方式配置数据源
    • 数据源(连接池)的作用
    • 数据源开发的步骤
    • 数据源创建演示(c3p0)
      • 创建maven-web骨架项目
      • 导入mysql、c3p0、druid、junit坐标
      • 创建编写测试类
      • 测试运行
    • 数据源创建演示(druid)
      • 编写测试类
      • 测试运行
    • 抽出耦合的数据源
      • 新建文件
      • 编写测试类,加载properties配置文件
      • 测试运行
  • Spring配置数据源
    • 导入Spring坐标
    • 创建编写Spring.xml
    • 编写测试类
    • 测试运行
  • 抽取jdbc配置文件
    • 编写Spring.xml
    • 测试运行
  • 总结

一般方式配置数据源

数据源(连接池)的作用

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

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

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

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

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

数据源开发的步骤

  1. 导入数据源的坐标和数据库驱动坐标
  2. 创建数据源对象
  3. 设置数据源的基本连接数据
  4. 使用数据源获取连接资源和归还连接资源

数据源创建演示(c3p0)

创建maven-web骨架项目

导入mysql、c3p0、druid、junit坐标

   <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version></dependency><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.11</version><scope>test</scope></dependency></dependencies>

创建编写测试类

获取mybatis数据库的连接

package com.taotao.test;import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;import java.beans.PropertyVetoException;
import java.sql.Connection;/*** create by 刘鸿涛* 2022/4/7 0:38*/
public class DataSourceTest {@Test//测试手动创建 c3p0数据源public void test1() throws Exception {ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybatis?");comboPooledDataSource.setUser("root");comboPooledDataSource.setPassword("12345");Connection connection = comboPooledDataSource.getConnection();System.out.println(connection);connection.close();}
}

测试运行

数据源创建演示(druid)

编写测试类

package com.taotao.test;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;import java.beans.PropertyVetoException;
import java.sql.Connection;/*** create by 刘鸿涛* 2022/4/7 0:38*/
public class DataSourceTest {@Test//测试手动创建 c3p0数据源public void test1() throws Exception {ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybatis?");comboPooledDataSource.setUser("root");comboPooledDataSource.setPassword("12345");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://localhost:3306/mybatis?");druidDataSource.setUsername("root");druidDataSource.setPassword("12345");DruidPooledConnection connection = druidDataSource.getConnection();System.out.println(connection);connection.close();}
}

测试运行

抽出耦合的数据源

新建文件

test - java - resources - jdbc.properties

编写测试类,加载properties配置文件

@Test
//测试手动创建 c3p0数据源(加载properties配置文件)
public void test3() throws Exception {//读取配置文件//ResourceBudle类是jdk util包自带的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 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();
}

测试运行

Spring配置数据源

可以将DataSource的创建权交由Spring容器去完成

导入Spring坐标

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

创建编写Spring.xml

text-resources

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"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"><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mybatis?"></property><property name="user" value="root"></property><property name="password" value="12345"></property></bean>
</beans>

编写测试类

    @Test//测试Spring容器产生数据源对象public void test4() throws Exception{//获得Spring xml文件ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");//使用idDataSource dataSource = (DataSource) app.getBean("dataSource");//反射获取,不太安全,比较方便
//        DataSource dataSource = app.getBean(DataSource.class);Connection connection = dataSource.getConnection();System.out.println(connection);connection.close();}

测试运行

抽取jdbc配置文件

applicationContext.xml加载jdbc.properties配置文件获取连接信息

首先,需要引入context命名空间和约束路径:

编写Spring.xml

<?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"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"><!--    加载外部的properties文件--><context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder><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>
</beans>

测试运行

总结

  • 配置完后,提高耦合性,后期维护起来也相对简单,只需更改properties配置文件,即可对整个项目jdbc连接做出贡献

Spring - Spring配置文件-Spring配置数据源详解相关推荐

  1. 第十二章 Spring Cloud Config 统一配置中心详解

    目录 一.配置问题分析及解决方案 1.问题分析 2.解决方案 二.Spring Cloud Config 介绍 1.Spring Cloud Config特性 2.Spring Cloud Confi ...

  2. SpringSecurity权限管理框架系列(六)-Spring Security框架自定义配置类详解(二)之authorizeRequests配置详解

    1.预置演示环境 这个演示环境继续沿用 SpringSecurit权限管理框架系列(五)-Spring Security框架自定义配置类详解(一)之formLogin配置详解的环境. 2.自定义配置类 ...

  3. Spring @Scheduled定时任务调度配置的详解

    Spring定时器中配置文件中一些配置信息,供各位参考及指正 创建一个包含定时器配置的Spring配置文件:如spring-taskTime.xml.以下均为配置信息: <?xml versio ...

  4. IntelliJ IDEA 2017 MySQL5 绿色版 Spring 4 Mybatis 3 配置步骤详解(二)

    前言    继续上一篇安装教程 首先是MySQL绿色版安装之后其他组件安装,如果篇幅较长会分为多篇深入讲解,随笔属于学习笔记诸多错误还望指出 共同学习. MySQL 5.7 绿色版   我本地安装的是 ...

  5. spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

    spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...

  6. 关于Spring 任务调度之task:scheduler与task:executor配置的详解

    关于Spring 任务调度之task:scheduler与task:executor配置的详解 其实就是Spring定时器中配置文件中一些配置信息,由于笔者自己是头一次使用,有些配置详细不太明白,随即 ...

  7. 【夯实Spring Cloud】Spring Cloud分布式配置中心详解

    本文属于[夯实Spring Cloud]系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货.系列目录如下: [夯实Spring Cloud]D ...

  8. Spring Boot笔记—多线程系列(三)—配置参数详解

    前言 前两篇文章,我们已经学会了如何使用spring boot的多线程和自定义线程池.这篇文章,我们要深入了解上一篇文章中线程池的配置具体含义. 准备工作 说明 为了方便观察线程的情况(如执行完毕数量 ...

  9. Spring Boot 使用 Druid 连接池详解

    Spring Boot 使用 Druid 连接池详解 Alibaba Druid 是一个 JDBC 组件库,包含数据库连接池.SQL Parser 等组件,被大量业务和技术产品使用或集成,经历过严苛的 ...

最新文章

  1. 发现优质免费的区块链在线教程资源,包含PPT和视频资源,全部免费
  2. 嵌入式中单任务程序典型架构
  3. gis环境设置在哪_三维GIS平台的可视化应用 (下)
  4. java 图片上传 预览 demo_图片上传预览
  5. mysql的代码需要保存吗_php向Mysql数据库保存数据的代码
  6. 设置环境变量的三种方法【转载】
  7. diskgenius 单文件_电脑数据恢复及分区管理软件DiskGenius 英文专业版
  8. pythonajax学习_python学习-- django 2.1.7 ajax 请求
  9. Download PuTTY: latest release (0.75) pscp
  10. 48. Element isSupported() 方法
  11. 某些情况下java md5 base64_encode 与 php md5 base64_encode的签名
  12. 2017年美国大学生数学建模竞赛E题O奖65123论文解读
  13. mysql的填充因子_sql server填充因子
  14. Web端网页QQ临时会话在线咨询
  15. 01-Weakly supervised consistency
  16. Redis数据库简介
  17. 小米如何使用远程管理FTP操作电脑和手机的文件
  18. 运行uniapp项目,提示uniapp依赖插件还未加载,请稍后重试
  19. 如何截图翻译?推荐你三种截图翻译的方法
  20. shell-grep用法

热门文章

  1. [经验分享] 覃超线上直播课-模拟面试
  2. oracle设置session空闲时间超时断开
  3. 【深度学习框架输入格式】NCHW还是NHWC?
  4. 泛型类、泛型方法的使用与理解
  5. 鼠标USB接口不能用了——卸载总线驱动
  6. 中标麒麟 7 操作系统下安装达梦数据库
  7. linux如何运行jar包、查看jar包进程、停止jar包
  8. 进程间通信的方式及原理
  9. 如何恢复已删除的文件:终极指南
  10. php雅思老师,雅思口语话题:最喜欢的老师