Spring:基于xml和注解的事务
程序员文章站
2024-03-24 12:45:58
...
基于xml的事务
1、导入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
2、环境配置
需要新增事务管理的tx约束,同时也需要aop的约束
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--配置事务管理器
PlatformTransactionManager接口是spring的事务管理器,它提供了操作事务的方法
常用实现类有DataSourceTransactionManager
使用时注入数据源,因为事务本来就是为数据库服务的
-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--配置事务的通知,transaction-manager用于指定事务管理器
-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 配置事务的属性,用于指定什么样的方法有什么样的事务控制-->
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" read-only="false"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<!--开始配置aop,用于事务信息的通知-->
<aop:config>
<!-- 配置切入点表达式-->
<aop:pointcut id="pt1"
expression="execution(* com.zanpng.service.impl.*.*(..))"/>
<!--建立切入点表达式和事务通知的对应关系 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"></aop:advisor>
</aop:config>
</beans>
事务的属性
propagation--------用于指定事务的传播行为。默认值是REQUIRED,表示一定会有事务,增删改的选择。查询方法可以选择SUPPORTS。
read-only--------用于指定事务是否只读。只有查询方法才能设置为true。默认值是false,表示读写。
isolation--------用于指定事务的隔离级别。默认值是DEFAULT,表示使用数据库的默认隔离级别。
timeout--------用于指定事务的超时时间,默认值是-1,表示永不超时。如果指定了数值,以秒为单位。
rollback-for--------用于指定一个异常,当产生该异常时,事务回滚,产生其他异常时,事务不回滚。没有默认值。表示任何异常都回滚。
no-rollback-for--------用于指定一个异常,当产生该异常时,事务不回滚,产生其他异常时事务回滚。没有默认值。
事务的传播特性
- PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
- PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
- PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
- PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
- PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
- PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
- PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有就开启事务
基于注解的事务
1、新增context约束,开启注解扫描
2、配置事务管理器
3、开启spring对注解事务的支持
<tx:annotation-driven transaction-manager="transactionManager"/>
4、在需要事务支持的地方(类上或者方法上)使用以**解
@Transactional
上一篇: 图片缩放
下一篇: [4]SwiftUI
推荐阅读
-
Spring:基于xml和注解的事务
-
Spring基于xml配置与注解驱动开发(一)
-
Spring中xxx-servlet.xml和applicationContext.xml的认识 applicationcontextspringmvc
-
Spring与Mybatis基于注解整合Redis的方法
-
Spring使用AspectJ注解和XML配置实现AOP
-
Spring使用AspectJ注解和XML配置实现AOP
-
PHP基于DOMDocument解析和生成xml的方法分析
-
PHP基于DOMDocument解析和生成xml的方法分析
-
Spring3.1.1+MyBatis3.1.1的增、删、查、改以及分页和事务管理
-
Spring3.1.1+MyBatis3.1.1的增、删、查、改以及分页和事务管理