spring手动控制事务开启_spring编程式事务

本文介绍了Spring框架中的编程式事务管理,通过自定义注解和AOP拦截器模拟了手动控制事务的开启和回滚。通过示例展示了正常执行和异常情况下事务的处理效果,帮助读者理解Spring事务的原理和应用。
摘要由CSDN通过智能技术生成

f8a3713fb9308af16cd638c93eb43016.gif

事务是spring框架中一个核心的模块,事务的ACID特性想必对于学习java的同学来说都不陌生,对于spring,实现事务的底层原理其实很简单,就是通过AOP代理进行实现,而实现spring的AOP更底层的,就是使用反射机制完成的;

举例来说,当你的方法上标注了@Service之后,spring怎么知道你这个类会被纳入到整个bean的容器中进行管理呢?如果在这个类下面的某个方法上面加了@Transactionnal注解,spring怎么知道要为你的这个方法开启一个事务管理器呢?说到底,反射在这里就派上用场了,总体来说,就是通过反射,匹配类上的注解,再去匹配方法上的注解,只要找到了相应的注解,就开启相应的特性,就是这么简单,

关于spring事务,常见的有两种,一种是编程式事务,比如java代码使用Jdbc进行数据库操作而没有引入其他框架时,就需要通过手动编写事务进行处理,另一种就是我们熟知的使用spring框架,帮助我们管理事务,比如像我们在xml配置文件中,通过配置扫描包和事务管理器,就可以对相关的类进行事务管理了,下面来演示一下采用编程式事务来学习一下spring的事务特性,了解了编程式事务,xml的事务就不是难事了,

项目结构非常简单,就是几个包和一个spring的配置文件,

8381d39b89cc395dda9e9a9669f848ec.png

1、pom依赖,主要是spring相关的依赖,

5.1.2.RELEASEUTF-8UTF-81.8   org.springframework   spring-core   ${spring.version}   org.springframework   spring-context   ${spring.version}   org.springframework   spring-aop   ${spring.version}   org.springframework   spring-orm   ${spring.version}   org.aspectj   aspectjrt   1.6.1   org.aspectj   aspectjweaver   1.9.2   cglib   cglib   3.2.10   com.mchange   c3p0   0.9.5.2   mysql   mysql-connector-java   5.1.40   dom4j   dom4j   1.6.1

2、spring的基本配置文件,这里为了模拟原生的事务,直接配置的是 JdbcTemplate

       xml version="1.0" encoding="UTF-8"?>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"      xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"      xmlns:cache="http://www.springframework.org/schema/cache" xmlns:p="http://www.springframework.org/schema/p"      xsi:schemaLocation="http:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值