首页 > 其他分享 >Spring29 - 基于XML的事务管理

Spring29 - 基于XML的事务管理

时间:2023-02-08 16:24:40浏览次数:44  
标签:XML 事务管理 事务 jdbc 数据源 Spring29 基于 spring

基于XML的声明式事务

场景模拟

参考基于注解的声明式事务

与注解管理事务相同的通用步骤

(1) 开启组件扫描

<!--扫描组件-->
<context:component-scan base-package="com.atguigu.spring6"></context:component-scan>

(2) 创建数据源 -- jdbc.properties

jdbc.user=root
jdbc.password=123456
jdbc.url=jdbc:mysql://localhost:3306/spring?characterEncoding=utf8&useSSL=false
jdbc.driver=com.mysql.cj.jdbc.Driver

(3) 创建JdbcTemplate,注入数据源

<!-- 配置 JdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <!-- 装配数据源 -->
    <property name="dataSource" ref="druidDataSource"/>
</bean>

(4)创建事务管理器,注入数据源

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="druidDataSource"></property>
</bean>
新增步骤

(5) 引入aspectJ的依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-aspects</artifactId>
  <version>6.0.2</version>
</dependency>

(6) 配置事务通知,设置事务相关属性;配置切入点表达式:把事务通知添加到方法上

将Spring配置文件中去掉tx:annotation-driven 标签,并添加配置:

<aop:config>
    <!-- 配置事务通知和切入点表达式 -->
    <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.atguigu.spring.tx.xml.service.impl.*.*(..))"></aop:advisor>
</aop:config>
<!-- tx:advice标签:配置事务通知 -->
<!-- id属性:给事务通知标签设置唯一标识,便于引用 -->
<!-- transaction-manager属性:关联事务管理器 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <!-- tx:method标签:配置具体的事务方法 -->
        <!-- name属性:指定方法名,可以使用星号代表多个字符
 			xxx* 表示所有以 xxx开头的方法 -->
        <tx:method name="get*" read-only="true"/>
        <tx:method name="query*" read-only="true"/>
        <tx:method name="find*" read-only="true"/>
    
        <!-- read-only属性:设置只读属性 -->
        <!-- rollback-for属性:设置回滚的异常 -->
        <!-- no-rollback-for属性:设置不回滚的异常 -->
        <!-- isolation属性:设置事务的隔离级别 -->
        <!-- timeout属性:设置事务的超时属性 -->
        <!-- propagation属性:设置事务的传播行为 -->
        <tx:method name="save*" read-only="false" rollback-for="java.lang.Exception" propagation="REQUIRES_NEW"/>
        <tx:method name="update*" read-only="false" rollback-for="java.lang.Exception" propagation="REQUIRES_NEW"/>
        <tx:method name="delete*" read-only="false" rollback-for="java.lang.Exception" propagation="REQUIRES_NEW"/>
    </tx:attributes>
</tx:advice>

标签:XML,事务管理,事务,jdbc,数据源,Spring29,基于,spring
From: https://www.cnblogs.com/Ashen-/p/17102255.html

相关文章

  • xml和xsd
    1·XMLschema元素|菜鸟教程(runoob.com)https://www.runoob.com/schema/el-schema.html2·XSD杂项数据类型(MiscellaneousDataTypes)(w3school.com.cn)https://w......
  • 002_springboot项目中 pom.xml 配置的作用
    parent:用以定义一系列的常用坐标版本;定义一系列的常用坐标组合;比如在pom.xml文件中引入一个javax.servlet,<version>那里是可以不写的,也就是不写版本,而决定采用哪个版本......
  • DataTableToXml
    privatestaticstringDataTableToXml(DataTabletable){if(null==table)returnstring.Empty;stringxmlStr="<ROOT>\n";......
  • Spring23 - 基于XML配置的AOP
    基于XML的AOP准备工作参考基于注解的AOP环境实现在.xml文件中对AOP进行配置<context:component-scanbase-package="com.atguigu.aop.xml"></context:component-s......
  • 数据采集技术之在Python中Libxml模块安装与使用XPath
    为了使用XPath技术,对爬虫抓取的网页数据进行抽取(如标题、正文等等),之后在Windows下安装libxml2模块(安装后使用的是Libxml模块),该模块含有xpath。准备需要的软件包:Python2.7......
  • Spring 如何实现事务管理
    事务管理方式在Spring项目中,我们可以用通过四种方式实现事务管理,分别是编程式事务管理、基于TransactionProxyFactoryBean的声明式事务管理、基于@Transactional的声......
  • maven pom.xml
    <!--文件拷贝时的编码jdk版本--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outp......
  • 实战:第十二章:txt文件转xml文件
    开发不就这么点事吗,有个啥好bb的controller@RequestMapping("/DataDistributionController")@RestControllerpublicclassDataDistributionController{......
  • mybatis的xml文件的传入参数不同的写法
    1、如果是传入多个字符串的参数。parameterType="java.lang.String"<selectid="getMaxNum"parameterType="java.lang.String"resultType="java.lang.Integer">se......
  • dom4j解析XML文档
    <spanstyle="font-size:14px;"><?xmlversion="1.0"encoding="utf-8"?><书架><书><书名>java就业培训教程</书名><作者>郝斌</作者><售价>36.2元</售......