Spring通过数据源获取与各种数据库的连接,怎么理解数据源呢?通俗来讲,数据源可以看作是一个灵活、便捷的连接工厂,这个工厂可以根据实际需要动态地维护池中连接的数量、健康程度、事务等。在以往的应用中,我们可以通过在Web应用服务器上面进行配置,然后获取对应的数据源引用,对此,Spring中不但可以通过JNDI获取应用服务器的数据源,也可以在Spring容器中配置数据源,甚至还可以直接通过编码的方式创建一个数据源等,本篇博客的主要内容就是要介绍Spring那些常见的数据源;

第一,先看看Spring对于Web应用服务器提供的数据源的支持,看下面一段简单的Web应用服务器端配置(具体配置方式在此不做叙述)。

由于是在服务器端配置的,所以一旦启动服务器,该数据源会自动得到创建,我们要做的事情就是在Spring侧直接获取就可以了,可以在Spring配置文件中,如下配置,正常使用就可以:

<!-- 从Web应用服务器获取配置的数据源信息 -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" p:jndiName="java:comp/env/jdbc/TestDB"/>

第二,接下来再来看看Spring框架本身提供的一个简单的数据源实现类DriverManagerDataSource,由于它并没有提供数据源连接池的功能,也就是说每次从该数据源获取连接时,都会简单地创建一个新的连接,所以它在大量连接请求的性能上表现不佳,因此Spring官方推荐它用于单元测试或简单的独立应用中,它既可以通过编码方式构建,也可以通过XML配置的方式,下面以此展示:

代码即数据结果如下:

package com.ssh.test;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class DriverManagerDataSourceConstructTest {public static void main(String[] args) {DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/ssh");dataSource.setUsername("root");dataSource.setPassword("root");System.out.println(dataSource);}
}


接下来看看XML配置方式,同样达到配置数据源效果:

<pre name="code" class="html"><!-- 将类路径下面的jdbc.properties里面记载的属性放置到Spring容器中 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置BasicDataSource数据源信息 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>

jdbc.properties配置内容如下:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/ssh
jdbc.username=root
jdbc.password=root

第三,下面介绍第三种数据源,DBCP数据源;DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括commons-pool的类包,配置基本同上面XML配置:

<!-- 将类路径下面的jdbc.properties里面记载的属性放置到Spring容器中 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置BasicDataSource数据源信息 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/>
</bean>

第四,C3P0数据源,这个数据源是一个开放源代码的JDBC数据源实现项目,该数据源拥有比DBCP更丰富的配置属性,功能更强些,推荐使用这个数据源;

<!-- 将类路径下面的jdbc.properties里面记载的属性放置到Spring容器中 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置ComboPooledDataSource数据源信息 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="driverClass" value="${jdbc.driverClassName}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/>
</bean>

除了上述数据源之外,还有另外几种数据源,在上述叙述中,没有说明更为细致的配置,详细配置请参照对应数据源的产品文档,本篇博客的目的就是给对Spring数据源含糊不清的,做一些引导说明,为下篇Spring和Hibernate做准备!

Spring之数据源整理相关推荐

  1. 搭建eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo

    前言:我这里搭建好eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo.新手快速上手直接看demo. 最后处提供完整高质量de ...

  2. [转载] Spring面试题整理

    参考链接: Java中的动态方法Dispatch和运行时多态 Spring面试题整理 2018年03月07日 21:11:46 hrbeuwhw 阅读数:49116 Spring 概述 1. 什么是s ...

  3. SpringBoot-整合Beetlsql及多数据源整理

    ## SpringBoot-整合Beetlsql及多数据源整理 1.引入Beetlsql包 <dependency>     <groupId>com.ibeetl</g ...

  4. Spring多数据源配置和使用

    Spring多数据源配置和使用 1.配置信息 <!--==============================bpt_mobdb数据库配置========================== ...

  5. spring(16)------spring的数据源配置

    spring(16)------spring的数据源配置 在spring中,通过XML的形式实现数据源的注入有三种形式. 一.使用spring自带的DriverManagerDataSource 使用 ...

  6. spring 动态数据源

    1.动态数据源:  在一个项目中,有时候需要用到多个数据库,比如读写分离,数据库的分布式存储等等,这时我们要在项目中配置多个数据库. 2.原理:   (1).spring 单数据源获取数据连接过程: ...

  7. 深入理解Spring Boot数据源与连接池原理

    ​ Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...

  8. 我已经把它摸的透透的了!!!Spring 动态数据源设计实践,全面解析

    [ Spring 动态数据源 动态数据源是什么?它能解决什么??? 在实际的开发中,同一个项目中使用多个数据源是很常见的场景.比如,一个读写分离的项目存在主数据源与读数据源. 所谓动态数据源,就是通过 ...

  9. spring—配置数据源

    数据源(连接池)的作用 数据源(连接池)是提高程序性能如出现的 事先实例化数据源,初始化部分连接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源 常见的数据源(连接池):DBCP. ...

最新文章

  1. java 路径 工具类,java 绝对路径工具类
  2. 爬虫入门到精通-HTTP协议的讲解
  3. 树与二叉树 | 实验3:由遍历序列构造二叉树
  4. 【数字信号处理】线性常系数差分方程 ( 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 “ 线性时不变系统 “ 案例 | 使用递推方法证明 )
  5. MFC的sendmessage和postmessage 以及sendmessagetimeout
  6. Linux下的磁盘空间管理
  7. php获得指定目录文件,PHP遍历指定文件夹获取路径及大小(包含子文件夹)
  8. 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目
  9. 分布式平台下的HS(High-Security) --对称加密
  10. 共享库/动态库目录path
  11. 智能送药小车(F 题)--2021 年全国大学生电子设计竞赛
  12. *寒假水121——叠筐
  13. 真正的数字化,是CEO决策的底层逻辑要变了
  14. 教育网看高清世界杯方法
  15. 苹果a7处理器_苹果手机芯片为什么那么强,看看苹果A系列处理器的历史
  16. PHP工厂模式的好处
  17. FPGA——状态机专题练习
  18. Python 模拟NBA文字直播 V1.0
  19. 阿里云CentOS8_x86_64_Haproxy代理gitlab及mantis
  20. python运行异常UserWarning:Could not import the lzma module .Your installed Python is incomplet

热门文章

  1. Scala 类和对象
  2. Java中isAssignableFrom()方法与instanceof()方法用法
  3. 线性电源与开关电源的区别
  4. 银行科技管理工作优化提升之我见
  5. Android游戏开发基础part4--Bitmap位图的渲染与操作
  6. 新词新意—The Sticks 乡下
  7. fjblog佛教博客不错
  8. antd vue中,如何给表单动态添加input,解决遇到一些坑
  9. OpenCV图像、矩阵、数组介绍
  10. Dart 12-Day