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引擎是不支持事务的;

时间: 2024-10-17 09:31:41

Spring Boot1.5.4 连接池 和 事务的相关文章

【j2ee spring】7、spring与数据库的连接的操作事务管理

spring与数据库的连接的操作事务管理 1.首先我们的知道spring管理事务的方式有两种 还是一种是以注解的方式 在service类前加上@Transactional,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务. Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚.这个例外是unchecked 如果遇到checked意外就不回滚. 1 让checked例外也回滚:在整个方法前加上 @Transactional(rollb

搭建spring工程配置数据源连接池

Spring作为一个优秀的开源框架,越来越为大家所熟知,前段时间用搭了个spring工程来管理数据库连接池,没有借助Eclipse纯手工搭建,网上此类文章不多,这里给大家分享一下,也作为一个手记. 工程结构: 注意:src目录下的applicationContext.xml是单元测试用的,作为web工程的话就使用WEB-INF下的applicationContext.xml. 1.下载jar包 这里需要下载很多spring的jar包,推荐去官网下载,很多人会说官网只提供maven和gradle下

Spring中常用的连接池配置

首先,我们准备文件 jdbc.properties,用于保存连接数据库的信息,利于我们在配置文件中的使用 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\://localhost\:3306/mybook jdbc.username=root jdbc.password=1234 一:Spring框架内置的连接池(内置jar包可以使用) 当然,它是使用到  spring-jdbc-4.2.0.RELEASE.jar 在applicat

Spring Boot配置MongoDB连接池

Spring Boot中通过依赖 spring-boot-starter-data-mongodb ,来实现 spring-data-mongodb 的自动配置. 但是默认情况下,Spring Boot 中,并没有像使用MySQL或者Redis一样,提供了连接池配置的功能.因此,我们需要自行重写 MongoDbFactory ,实现MongoDB客户端连接的参数配置扩展. 需要说明的是,MongoDB的客户端本身就是一个连接池,因此,我们只需要配置客户端即可. 配置文件 为了统一Spring B

Spring框架中获取连接池常用的四种方式

1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括/lib/jakarta-commons/commons-pool.jar.下面是使用DBCP配置oracle数据源的配置片断: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDat

阶段3 1.Mybatis_07.Mybatis的连接池及事务_1 今日课程内容介绍

原文地址:https://www.cnblogs.com/wangjunwei/p/11317631.html

阶段3 1.Mybatis_07.Mybatis的连接池及事务_2 连接池介绍

原文地址:https://www.cnblogs.com/wangjunwei/p/11317664.html

spring创建连接池的几种方式

spring使用连接池有很多种方式,jdbc(不使用连接池),c3p0,dbcp,jndi,下面将分别贴代码介绍这几种:  1.jdbc方式 使用的是DriverManagerDataSource,DriverManagerDataSource建立连接是只要有连接就新建一个connection,  根本没有连接池的作用 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManag

Spring配置连接池

---------------------siwuxie095 Spring 配置连接池 1.Spring 配置内置连接池 在 applicationContext.xml 中添加如下内容: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName&qu