Spring之数据源整理
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之数据源整理相关推荐
- 搭建eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo
前言:我这里搭建好eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo.新手快速上手直接看demo. 最后处提供完整高质量de ...
- [转载] Spring面试题整理
参考链接: Java中的动态方法Dispatch和运行时多态 Spring面试题整理 2018年03月07日 21:11:46 hrbeuwhw 阅读数:49116 Spring 概述 1. 什么是s ...
- SpringBoot-整合Beetlsql及多数据源整理
## SpringBoot-整合Beetlsql及多数据源整理 1.引入Beetlsql包 <dependency> <groupId>com.ibeetl</g ...
- Spring多数据源配置和使用
Spring多数据源配置和使用 1.配置信息 <!--==============================bpt_mobdb数据库配置========================== ...
- spring(16)------spring的数据源配置
spring(16)------spring的数据源配置 在spring中,通过XML的形式实现数据源的注入有三种形式. 一.使用spring自带的DriverManagerDataSource 使用 ...
- spring 动态数据源
1.动态数据源: 在一个项目中,有时候需要用到多个数据库,比如读写分离,数据库的分布式存储等等,这时我们要在项目中配置多个数据库. 2.原理: (1).spring 单数据源获取数据连接过程: ...
- 深入理解Spring Boot数据源与连接池原理
Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...
- 我已经把它摸的透透的了!!!Spring 动态数据源设计实践,全面解析
[ Spring 动态数据源 动态数据源是什么?它能解决什么??? 在实际的开发中,同一个项目中使用多个数据源是很常见的场景.比如,一个读写分离的项目存在主数据源与读数据源. 所谓动态数据源,就是通过 ...
- spring—配置数据源
数据源(连接池)的作用 数据源(连接池)是提高程序性能如出现的 事先实例化数据源,初始化部分连接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源 常见的数据源(连接池):DBCP. ...
最新文章
- java 路径 工具类,java 绝对路径工具类
- 爬虫入门到精通-HTTP协议的讲解
- 树与二叉树 | 实验3:由遍历序列构造二叉树
- 【数字信号处理】线性常系数差分方程 ( 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 “ 线性时不变系统 “ 案例 | 使用递推方法证明 )
- MFC的sendmessage和postmessage 以及sendmessagetimeout
- Linux下的磁盘空间管理
- php获得指定目录文件,PHP遍历指定文件夹获取路径及大小(包含子文件夹)
- 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目
- 分布式平台下的HS(High-Security) --对称加密
- 共享库/动态库目录path
- 智能送药小车(F 题)--2021 年全国大学生电子设计竞赛
- *寒假水121——叠筐
- 真正的数字化,是CEO决策的底层逻辑要变了
- 教育网看高清世界杯方法
- 苹果a7处理器_苹果手机芯片为什么那么强,看看苹果A系列处理器的历史
- PHP工厂模式的好处
- FPGA——状态机专题练习
- Python 模拟NBA文字直播 V1.0
- 阿里云CentOS8_x86_64_Haproxy代理gitlab及mantis
- python运行异常UserWarning:Could not import the lzma module .Your installed Python is incomplet