Spring Boot1.5.4 连接池 和 事务
原文:https://github.com/x113773/testall/issues/10
默认连接池
---
spring Boot中默认支持的连接池有Tomcat、HikariCP 、DBCP 、DBCP2,以下摘自[官方文档](http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/reference/htmlsingle/#boot-features-configure-datasource):
> Production database connections can also be auto-configured using a pooling DataSource. Here’s the algorithm for choosing a specific implementation:
>
> - We prefer the Tomcat pooling DataSource for its performance and concurrency, so if that is available we always choose it.
> - Otherwise, if HikariCP is available we will use it.
> - If neither the Tomcat pooling datasource nor HikariCP are available and if Commons DBCP is available we will use it, but we don’t recommend it in production and its support is deprecated.
> - Lastly, if Commons DBCP2 is available we will use it.
>
> If you use the spring-boot-starter-jdbc or spring-boot-starter-data-jpa ‘starters’ you will automatically get a dependency to tomcat-jdbc.
翻译如下:
数据库连接可以使用DataSource池进行自动配置。下面是选择一个特定实现的规则:
- 由于Tomcat数据源连接池的性能和并发,在tomcat可用时,我们总是优先使用它。
- 如果HikariCP可用,我们将使用它。
- 如果Commons DBCP可用,我们将使用它,但在生产环境不推荐使用它。
- 最后,如果Commons DBCP2可用,我们将使用它。
如果你使用了spring-boot-starter-jdbc 或者 spring-boot-starter-data-jpa起步依赖,就会自动获得tomcat-jdbc依赖,所以tomcat连接池就可以直接使用了。
---
此外使用spring.datasource.type可以指定一个特定的连接池,注意要使用完全限定名,例如:
`spring.datasource.type=com.alibaba.druid.pool.DruidDataSource`
若要使用druid还要进行一些额外的配置,详见[ springboot1.5.4 配置druid1.1.0(使用druid-spring-boot-starter)](https://github.com/x113773/testall/issues/11)
事务
---
当使用spring-boot-starter-data-jpa这个起步依赖,会通过HibernateJpaAutoConfiguration这个自动化配置类,构造事务管理器JpaTransactionManager。
当使用spring-boot-starter-jdbc这个起步依赖,会通过[DataSourceTransactionManagerAutoConfiguration](https://github.com/spring-projects/spring-boot/blob/v1.5.4.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceTransactionManagerAutoConfiguration.java)这个自动化配置类,构造事务管理器DataSourceTransactionManager。
可以通过在[Application.java ](https://github.com/x113773/testall/blob/master/src/main/java/com/ansel/testall/Application.java)加入如下代码,查看当前的连接池和事务管理器:
```
@Bean
public Object testBean(DataSource dataSource, PlatformTransactionManager platformTransactionManager) {
System.out.println("current dataSource: " + dataSource.getClass().getName());
System.out.println("current platformTransactionManager: " + platformTransactionManager.getClass().getName());
return new Object();
}
```
所以只要加了上面其中一个依赖,然后就可以在类上、或者方法上使用@Transactional 注解了:
```
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public int insert(User user) {
return userMapper.insert(user);
}
....
```
注意:
- 经测试无需使用@EnableTransactionManagement开启事务注解;
- 不要使用try catch把异常捕获了,会导致不能回滚;
- MySQL数据库表引擎innoDB是支持事务的,但是MyISAM引擎是不支持事务的;
Spring Boot1.5.4 连接池 和 事务的更多相关文章
- MyBatis基础_连接池与事务、动态SQL、注解开发
一.MyBatis连接池及事务控制 1.连接池 在实际开发中,都会使用连接池,因为它可以减少获取连接缩消耗的时间.所谓连接池,就是存储数据库连接的容器.连接池中存储一定数量的数据库连接,当线程需要使用 ...
- spring boot配置druid连接池连接mysql
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- 【MyBatis】MyBatis 连接池和事务控制
MyBatis 连接池和事务控制 文章源码 MyBaits 连接池 实际开发中都会使用连接池,因为它可以减少获取连接所消耗的时间.具体可查看 MyBatis 数据源配置在 SqlMapConfig.x ...
- 搭建spring工程配置数据源连接池
Spring作为一个优秀的开源框架,越来越为大家所熟知,前段时间用搭了个spring工程来管理数据库连接池,没有借助Eclipse纯手工搭建,网上此类文章不多,这里给大家分享一下,也作为一个手记. 工 ...
- 深入理解Spring Boot数据源与连接池原理
Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...
- Spring Boot使用Druid连接池基本配置
以下为Spring Boot配置Druid 一.pom.xml配置 <dependency> <groupId>com.alibaba</groupId> < ...
- Spring Boot下Druid连接池+mybatis
目前Spring Boot中默认支持的连接池有dbcp,dbcp2, hikari三种连接池. 引言: 在Spring Boot下默认提供了若干种可用的连接池,Druid来自于阿里系的一个开源连 ...
- Spring整合JDBC(连接池、JDBC模板、Dao配置到Spring容器、配置文件的优化)
1.Spring整合JDBC (1)导包(共12个): c3p0连接池.JDBC驱动(4个) Spring-jdbc.Spring-tx事务(2个) (2)JDBC模板对象(JDBCTemplate) ...
- Spring中常用的连接池配置
首先,我们准备Jdbc属性文件 jdbc.properties,用于保存连接数据库的信息,利于我们在配置文件中的使用 jdbc.driver=com.mysql.jdbc.Driver jdbc.ur ...
随机推荐
- hdu2594 Simpsons’ Hidden Talents
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594 思路: 其实就是求相同的最长前缀与最长后缀 KMP算法的简单应用: 假设输入的两个字符串分别是s ...
- ShadowBroker释放的NSA工具中Esteemaudit漏洞复现过程
没有时间测试呢,朋友们都成功复现,放上网盘地址:https://github.com/x0rz/EQGRP 近日臭名昭著的方程式组织工具包再次被公开,TheShadowBrokers在steemit. ...
- Java中的Classpath
classpath实际上就是编译后的,以classes文件夹为起点的路径各种path获取到的路径的区别 Demo.class.getResource("");//得到的是Demo类 ...
- 运维老鸟教你安装centos6.5如何选择安装包
标签:老男孩教育 Centos6.5安装选包原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.c ...
- Spring MVC 请求处理流程概览
SpringMVC工作流程 图一:请求流程概述 图二:请求在每个组件的处理 解释Spring工作流程 1.用户向服务器发送请求,请求被spring前端控制Servelt DispatcherServe ...
- Mysql5.7忘记root密码及修改root密码的方法
Mysql 安装成功后,输入 mysql --version 显示版本如下 mysql Ver 14.14 Distrib 5.7.13-6, for Linux (x86_64) using 6.0 ...
- 部署项目到weblogic时提示文件被锁,导致报错
部署项目到weblogic中出现一个“黄叹号!”.报错如下: (1) Deployment is out of date due to changes in the underlying projec ...
- Yii2.0中场景的使用小记
熟悉Yii框架的人都知道,灵活的使用场景可以达到事半功倍的效果! 比如普通的数据的新增.修改,新增需要验证其中两个字段,而修改只需要验证其中一个字段:还有种情况,也是我们现在用到的,同一张表(同一个m ...
- js写插件教程
<!doctype html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 学习笔记TF018:词向量、维基百科语料库训练词向量模型
词向量嵌入需要高效率处理大规模文本语料库.word2vec.简单方式,词送入独热编码(one-hot encoding)学习系统,长度为词汇表长度的向量,词语对应位置元素为1,其余元素为0.向量维数很 ...