spring-TX事务管理

事务与AOP

​ 数据库事务是一个集合概念,可以由多个增删改查组成。当其中某个操作出现错误时,应该对前面已经执行的操作进行回滚。JAVA是自动提交事务的。如果要实现事务的功能,需要使用try/catch/final语句。首先关闭自动提交事务,在执行数据库操作成功后,提交事务。在catch中进行事务回滚,在final中关闭数据库连接。JAVA实现事务的方式比较固定,适合使用AOP的思想来对事件处理进行统一的处理。而spring-TX就提供了解决方案。


spring-TX事务管理

外部接口(事务管理器)–>增强方法(事务集)–>手术刀(AOP)

步骤(XML中配置) 具体配置
事务管理器(事务集的必要属性) 设置数据源(数据库)(事务是数据库的功能,可以通过接口,给外部管理)
事务集(增强的方法) 设置事务的各种属性(哪些方法—什么隔离级别。。)
AOP(手术刀) 设置切点,在切点执行的操作(事务集)

具体实现: XML配置方式

1. 事务管理器配置

<!--
		Spring中,使用XML配置事务三大步骤:
			1. 增强方法必要属性(事务管理器,为事务获得数据源)
			2. 增强方法(事务)
			3. AOP手术刀
		  -->
		<!--事务管理者  -->
		<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
            <!--指定数据源 -->
			<property name="dataSource" ref="dataSource"></property>
		</bean>

2.事务集配置

<!--操作集(事务):指定事务管理者  -->
		<tx:advice id="advice" transaction-manager="transactionManager">
            <!--操作集:方法集,传播方式,隔离级别  -->
			<tx:attributes>
				<tx:method name="add*" propagation="REQUIRED" isolation="DEFAULT"/>
			</tx:attributes>
		</tx:advice>

3.AOP手术刀配置

<!--手术刀AOP  -->
		<aop:config >
            <!--位置集  -->
			<aop:pointcut expression="execution(* com.bb.service.impl.*.*(..))" id="mypointcut"/>
            <!--顾问:连接操作集和位置集  -->
			<aop:advisor advice-ref="advice" pointcut-ref="mypointcut" />
		</aop:config>

详细:事务管理器对象(设置数据源)–> 事务集(连接到事务管理器,设置进行该事务管理的方法名集合,事务的传播方式和隔离级别) --> aop手术刀设置(设置切点集,精确到方法特性;设置顾问,连接切点集和事务集)

3部分独立配置,各司其职,实现解耦,提高代码的组装能力,获得强大代码构建潜力。

项目打包(eclipse,javaSE1.8,普通项目) 提取码:mivk

具体实现: 注解配置方式

猜你喜欢

转载自blog.csdn.net/qq_32640013/article/details/94645435