基于xml的声明式事务控制和基于注解的声明式事务控制

目录

1 基于xml的声明式事务控制

1.1 什么是声明式事务控制

1.2 声明式事务处理的作用

1.3 声明式事务控制的实现

- 谁是切点?

- 谁是通知?

 - 谁是切面? (配置织入)

2 基于注解的声明式事务控制

2.1 注解配置解析

2.2 配置要点


1 基于xml的声明式事务控制

1.1 什么是声明式事务控制

Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中声明,用在Spring配置文件中声明式的处理事务来代替编程式的处理事务。

1.2 声明式事务处理的作用

(1)事务管理不侵入开发的组件。具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在定义文件中重新配置即可。(相当于aop思想,切点(被增强的方法)指的是业务逻辑方法,通知指封装增强业务的方法)

(2)在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便

注意:Spring声明式事务控制底层就是aop

1.3 声明式事务控制的实现

- 谁是切点

<!--目标对象 内部的方法就是切点(1、set参数名 2、bean的Id)-->
<bean id="userService" class="service.impl.UserServiceImpl">
    <property name="userDao" ref="userDao"></property>
</bean>

- 谁是通知?

平台事务管理器的配置:告诉spring我要使用哪一套api,然后进行事务的控制

<!--配置平台事务管理器(事务的增强需要平台事务管理器)-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!--配置事务通知 事务的增强(需要引用上面配置的平台事务管理器)-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <!--设置事务的属性信息-->
    <tx:attributes>
        <!--切点方法的事务参数的配置,也就是说给哪个方法配置事务(一个方法默认对应一个事务),*代表任意方法-->
        <tx:method name="*"/>
        <tx:method name="update" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true"/>
    </tx:attributes>
</tx:advice>

切点方法的事务参数:
     - name:切点方法名称
     - isolation:事务的隔离级别
     - propogation:事务的传播行为
     - timeout:超过时间
     - read-only:是否只读

- 谁是切面? (配置织入)

<!--配置事务的织入-->
<aop:config>
    <aop:advisor advice-ref="txAdvice" pointcut="execution(* service.impl.*.*(..))"/>
</aop:config>

2 基于注解的声明式事务控制

2.1 注解配置解析

①使用@Transactional在需要进行事务控制的类或是方法上修饰,注解可用的属性同xml配置方式,例如隔离级别、传播行为等。
②注解使用在类上,那么该类下的所有方法都使用同一套注解参数配置。
③使用在方法上,不同的方法可以采用不同的事务参数配置。
④Xml配文件中要开启事务的注解驱动<tx:annotation-driven/>

2.2 配置要点

·平台事务管理器配置(xml方式)

<!--配置平台事务管理器(事务知的增强需要平台事务管理器)-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

·事务通知的配置(@Transactional注解配置)

·事务注解驱动的配置<tx:annotation-driven/>

<!--事务的注解驱动-->
<tx:annotation-driven transaction-manager="transactionManager"/>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值