Spring框架学习笔记——关于事务的处理(2)
程序员文章站
2022-07-05 07:58:52
...
上一篇学习了使用注解配置事务,但是只适用于中小型项目,大项目中,有很多的类,方法,需要大量的配置事务,使用aspectj框架功能,在spring配置文件中声明类,方法需要的事务。这种方式业务方法和事务配置完全分离。
实现步骤:都是在xml配置文件中实现。
1)要使用的是aspectj框架,需要加入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
2)声明事务管理器对象
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
3)声明方法需要的事务类型(配置方法的事务属性【隔离级别,传播行为,超时】)
4)配置aop:指定哪些类需要创建代理。
<!-- 声明式事务处理,与源代码完全分离-->
<!-- 1声明事务管理器对象-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource"/>
</bean>
<!-- 2声明业务方法的事务属性(隔离级别,传播行为,超时时间)
id:自定义名称,表示<tx:advice>和</tx:advice>之间的配置内容的
transaction-manager:事务管理器对象的id
-->
<tx:advice id="myAdvice" transaction-manager="transactionManager">
<!-- tx:attributes:配置事务的属性 -->
<tx:attributes>
<!-- tx:method:给具体的方法配置事务属性,method可以有多个,分别给不同的方法设置事务属性
name:方法的名称 1)完整的名称,不带有包和类
2)方法可以使用通配符,*表示任意字符
propagation:传播行为,枚举值
isolation:隔离级别
rollback-for:你指定的异常类,发生异常,一定回滚
-->
<tx:method name="buy" propagation="REQUIRED" isolation="DEFAULT"
rollback-for="java.lang.NullPointerException,com.wxx.excep.NotEnoughException"/>
<!-- 使用通配符,指定很多的方法-->
<tx:method name="add*" propagation="REQUIRES_NEW"/>
<!-- 指定修改方法-->
<tx:method name="modify*"/>
<!-- 删除方法-->
<tx:method name="remove*"/>
<!-- 查询方法,query,search,find-->
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置aop-->
<aop:config>
<!-- 配置切入点表达式:指定哪些包中类,要使用事务
id:切入点表达式的名称,唯一值
expression:切入点表达式,指定哪些类要使用事务,aspectj会创建代理对象
-->
<aop:pointcut id="servicePt" expression="execution(* *..service..*.*(..))"/>
<!-- 配置增强器:关联advice和pointcut
advice-ref:通知,上面tx:advice那里的配置
pointcut-ref:切入点表达式的id
-->
<aop:advisor advice-ref="myAdvice" pointcut-ref="servicePt"/>
</aop:config>
运行结果与上篇一致。
推荐阅读
-
关于SQLServer2005的学习笔记 XML的处理
-
Spring入门学习笔记(2)——基于Java的配置
-
Spring框架学习笔记——关于事务的处理(2)
-
荐 从零写一个具有IOC-AOP-MVC功能的框架---学习笔记---11. MVC功能之http请求处理器的编写---简易框架最后一公里!
-
spring boot框架学习6-spring boot的web开发(2)
-
spring boot框架学习8-【干货】spring boot的web开发(4)-自定义拦截器处理权限
-
struts2学习笔记九(第9讲.Struts2的校验框架 续)
-
struts2学习笔记八(第8讲.Struts2的校验框架)
-
Spring框架学习笔记-基于Java类的配置
-
关于SQLServer2005的学习笔记 XML的处理