spring中事务配置

1:事务实现方式是通过动态代理实现;通过xml配置方式:

1:其中,<tx:method name="trans" />中的name属性,支持通配符,比如*   name="trans*"代表所有以trans开头的方法,都适用

一个通用的事务配置:

2:使用注解方式配置事务:

添加DI注解解析器,IOC注解解析器,事务注解解析器(TX注解解析器<tx:annotation-diven transaction-manager="txManager">),这个事务解析器中有个很重要的参数,就是配置事务管理器txtManager;事务本质就是动态代理,默认是JDK动态代理,如果不想用JDK动态代理,而是选择使用cglib方式进行动态代理,则可以设置如图属性(false为JDK,true为cglib);(JDK动态代理和cglib动态代理的主要区别是JDK是基于接口,cglib不是基于接口)

注:注解解析器的作用是对某些注解可以进行解析

配置数据源(DataSource)是必须的;配置db.properties也是必须的;其余配置,都可以通过@Transactional注解,如图

3:使用注解+java代码配置的方式(springboot目前使用这种方式)

创建appConfig.java文件,该文件中添加@Configuration注解,相当于我们的applicationContext.xml文件;

@Import(DataSourceConfig.class),包含其它的配置类;DataSourceConfig.java也是一个有@Configuration标识的配置类;

@ComponentScan 就是一个IOC注解(<context:component-scan base-package="....">),可以带参数,参数为扫描的包,如果不带参数,代表当前类所在的包及其自包

@EnableTransactionManager:事务注解解析器(<tx:annotation-driven transaction-manager="xxxx">)

@Bean:相当于将一个类交给spring管理(<bean id="xxx",class="xxxxx"></bean>)

DataSourceConfig.java:

@PropertySource("classpath:db.properties"):相当于<context:property-placeholder location="classpath:db.properties">

@Value:读取db.properties配置文件中属性的值

最后,也是需要配合@Transaction注解使用;

原文地址:https://www.cnblogs.com/panbin/p/11324433.html

时间: 2024-07-31 08:24:47

spring中事务配置的相关文章

Spring中事务管理

1.什么是事务? 事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事务具有四大特性ACID 1)原子性(Atomicity):即不可分割性,事务要么全部被执行,要么就全部不被执行.如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生转换:如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换. 2)一致性(Consistency):事务的执行使得数据库从一种正确状态转换成另一种正确状态.例如对于银行转账事务,不管事务

Spring MVC 事务配置

Spring MVC事务配置 要了解事务配置的所有方法,请看一下<Spring事务配置的5种方法> 本文介绍两种配置方法: 一.      XML,使用tx标签配置拦截器实现事务 一.      Annotation方式 以下所使用环境为Spring4.0.3.Hibernate4.3.5 一.      XML,使用tx标签配置拦截器实现事务 Entity类User.java,持久化类,对应数据库表user package com.lei.demo.entity; import javax.

[转]Spring MVC 事务配置

Spring MVC事务配置 要了解事务配置的所有方法,请看一下<Spring事务配置的5种方法> 本文介绍两种配置方法:  <tx:advice/>就是告诉事务管理器:怎么做.如何去执行.通过什么方法(形式)去执行. 一.      XML,使用tx标签配置拦截器实现事务 一.      Annotation方式 以下所使用环境为Spring4.0.3.Hibernate4.3.5 一.      XML,使用tx标签配置拦截器实现事务 Entity类User.java,持久化类

spring 实现事务配置的方式

spring 中常用的两种事务配置方式以及事务的传播性.隔离级别 一.注解式事务 1.注解式事务在平时的开发中使用的挺多,工作的两个公司中看到很多项目使用了这种方式,下面看看具体的配置demo. 2.事务配置实例 (1).spring+mybatis 事务配置 <!-- 定义事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSource

c3p0在spring中的配置

在大家的开发和学习当中应该经常用到数据库的连接和使用,不过连接 的方式就有很多种方式了,比方说用最最简单的JDBC 也好,还有用比 较复杂一点的就是数据库连接池,当然还有使用DBCP的连接的,各种方 法有各种方法的优势面和缺点,这据需要我们根据具体情况具体分析了 ,比方说要是一个并不是很大的项目的话,而且 使用的硬件机器的性 能也不是非常好的话,估计就没有必要使用数据库连接池了,毕竟连接 池平时总是管理着连接, 就会极大的占用这机器的运行性能和效率. (这里的C3P0的使用是基于Spring框架

spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常

java.lang.IllegalStateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常 这个错误,网上说的原因一大推,反正我这个出的问题 是因为 虽然我在 spring 里把事务都配置好了,结果运行就出现这个错误,看看配置都没什么问题,都是网上 案例 照 写编码的,还是错的,结果发现是因为 我

【转】Spring中事务与aop的先后顺序问题

[原文链接] http://my.oschina.net/HuifengWang/blog/304188 [正文] Spring中的事务是通过aop来实现的,当我们自己写aop拦截的时候,会遇到跟spring的事务aop执行的先后顺序问题,比如说动态切换数据源的问题,如果事务在前,数据源切换在后,会导致数据源切换失效,所以就用到了Order(排序)这个关键字. 步骤01:    我们可以通过在@AspectJ的方法中实现org.springframework.core.Ordered 这个接口来

Spring管理事务配置的五种方式

spring配置文件中关于事务配置总是由三个组成部分,DataSource.TransactionManager和代理机制这三部分,无论是那种配置方法,一般变化的只是代理机制这块! 首先我创建了两个类,一个接口类一个实现类: package com.dao; public interface UserDao { public void getUser(); } package com.dao.impl; import org.springframework.orm.hibernate3.supp

阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API

分析aop的 xml 的代码.更直观一些 事务提交和回滚就是我们重复的代码 spring业余事务管理器,我们拿过来直接用就可以 提交和回滚的后面直接调用释放.所以释放资源之类就是多余的 在绑定连接到线程的时候,直接就设置成false,所以开启事务这个通知 也是多余的 spring中的事务 需要先导入包pom.xml 用刚上线类.DataSourceTransactionManager 如果用到Hibernate的话.这个是真正带着代码的实现类 TransactionDefinition 事务的隔