b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Spring AOP实现事务管理

电脑杂谈  发布时间:2020-03-26 00:13:29  来源:网络整理

spring aop事务配置_spring aop配置事务_spring aop配置事务

Spring AOP实现事务管理

事务管理对于企业应用程序至关重要. 即使在异常情况下,它也可以确保数据一致性. Sping中的事务管理实际上是事务的管理(提交,回滚).

声明式配置事务是Spring框架中最常用的,并且声明式配置可以基于XML或注释进行配置.

I. 基于注释的配置. 顾名思义,由于基于注释的配置是必需的,因此注释是必不可少的. 它们是在Spring框架中提供的.

@Transactional批注,此批注主要在需要打开事务的服务接口的实现类中配置,其中@Transactional值具有以下属性:

以上属性主要用于隔离和传播. 这两个属性的值是枚举.

spring aop配置事务_spring aop配置事务_spring aop事务配置

隔离(事务隔离级别)此属性用于隔离表事务. 对于某些并发访问或更新同一,必须设置此属性,否则会发生脏读和更新丢失等问题. 隔离属性是解决此问题的非常有效的方法. 隔离属性提供了不同隔离级别的枚举值:

隔离级别角色

Isolation.READ_UNCOMMITTED读取未提交的数据(脏读spring aop配置事务,不可重复读)

Isolation.READ_COMMITTED读取已提交的数据(将发生不可重复的幻像读取)

Isolation.REPEATABLE_READ可重复读取(将发生幻像读取)

Isolation.SERIALIZABLE序列化

spring aop配置事务_spring aop配置事务_spring aop事务配置

传播(事务传播行为)此属性是如何创建事务,如何加入事务的方法:

传播行为

传播. 如果有交易,则加入该交易,如果没有,则创建一个新交易(不写)

Propagation.NOT_SUPPORTED容器没有为此方法打开事务

Propagation.REQUIRES_NEW创建新事务,而不管是否存在事务,原始事务已暂停,新执行完成且旧事务继续.

Propagation.MANDATORY必须在现有事务中执行,否则会引发异常

spring aop配置事务_spring aop事务配置_spring aop配置事务

Propagation.Never必须在非事务中执行,否则会引发异常(与Propagation.MANDATORY相反)

Propagation.SUPPORTS如果其他bean调用此方法并在其他bean中声明事务,则使用事务. 如果其他bean不声明交易,则不要使用交易

那么您如何在Spring中使用此事务注释?

在弹簧容器中配置以下配置信息:

{3: 3: 4: a: c: 4: 3: c: a: b: 6: 0: f: 1: b: 2: e: f: b: e: 9: d: 8: f: 9: c: f: 2: 1: 1: 1: 1: d)

在服务的接口实现类中添加@Teansactional批注. 请注意,实现类或方法的访问权限是公共的.

spring aop配置事务_spring aop事务配置_spring aop配置事务

在@Transactional批注中设置隔离(事务隔离级别)和传播(事务传播行为)这两个属性. 根据业务需求设置这两个属性. rollbackFor的功能是: 当程序报告Exception时,事务将执行回滚操作以确保数据的准确性.

如果某个方法不需要打开交易,请对该方法提交评论,然后将该属性设置为Propagation.NOT_SUPPORTED

注意:

注释必须放在弹簧(启动容器)中spring aop配置事务,否则事务将无法启动(因为扫描程序将扫描所有bean(事务注释@Transactional))

II. 基于XML的配置:

<tx:advice id="txAdvice" transaction-manager="transactionManager" >
    <tx:attributes>
        <tx:method name="update*" rollback-for="CustomException" isolation="DEFAULT" propagation="REQUIRED" />
        <tx:method name="save*" rollback-for="CustomException" isolation="DEFAULT" propagation="REQUIRED" />
        <tx:method name="insert*" rollback-for="CustomException" isolation="DEFAULT" propagation="REQUIRED" />
        <tx:method name="add*" rollback-for="CustomException" isolation="DEFAULT" propagation="REQUIRED" />
        <tx:method name="delete*" rollback-for="CustomException" isolation="DEFAULT" propagation="REQUIRED" />
    </tx:attributes>
</tx:advice>
<!-- 编写aop,让spring自动对目标生成代理 -->
<aop:config>
    <!-- 切入点 -->
    <aop:pointcut expression="execution(* com.koi.service.impl.*.*(..))"
        id="myPointcut" />
    <!-- 配置通知器:将切入点与通知整合 -->
    <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" />
</aop:config>

OF: 锦鲤(⑉°з°)-


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-152333-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      每日福利
      热点图片
      拼命载入中...