黑马JavaWeb-Day13

01-事务管理-事务回顾-spring事务管理


事务回顾


概念

事务是一组操作的集合,是一个不可分割的工作大伟,所有操作要么同时成功,要么同时失败。

操作

  • 开启事务(一组操作开始之前,要先开启事务):start transaction  /  begin;
  • 提交事务(这组操作全部成功后,提交事务):commit;
  • 回滚事务(中间任何一个操作出现异常,回滚事务):rollback;

spring事务管理

  • @Transactional在方法上:方法执行前开启事务,方法结束后提交事务。若有异常,自动回滚。
  • @Transactional在类上:类中所有的方法都交给spring管理。
  • @Transactional在接口上:接口中所有的实现类中的所有方法都交给spring管理。

事务管理日志

需要在配置文件application.yml中添加一下的配置,用来开启事务管理日志

案例

启动服务,在浏览器尝试删除部门,抛出了异常,并且有事务回滚rollback

部门的数据依然需在。


02-事务管理-事务进阶-rollbackFor属性



自己定义了异常,启动服务器,删除教研部,虽然删除了部门,但是员工依然存在



因为我们抛出的不是RuntimeException,所以事务没有回滚。而之前的int i=1/0是算数异常继承,它继承了RuntimeException,所以才能回滚。

因此我们要配置@Transactioal注解,指定所有的异常都要回滚。


tips:双击shift键能快速搜索查看源码。


03-事务管理-事务进阶-propagation属性


关于事务a和事务b,到底是把b加入到事务a中,还是新建一个事务。这个时候我们就要用到propagation来设置传播行为,我们着重关注REQUIRED,REQUIRES_NEW。每个属性值及含义如下图所示。

适用场景


04-AOP基础-快速入门


简单来说就是提供一个模版方法,例如以上截图中的,获取开始时间运行原始方法获取结束时间。

在AOP类上要加上@Component,交给spring的IOC容器代理;@Aspect注解,标识这是一个AOP类。在类中编写模板方法。


@Around注解表示的是包括哪些特定方法。

不难看出,里面包含了“包名”,即“com.itheima.service”,如果需求变更是需要修改这个表达式。

关于包名后面的两个   *

第一个  *  表示“该包下所有的类或者接口”。

第二个  *  表示“类或接口中所有的方法”。

关于两个  ..   ,意思是所有参数,


05-AOP基础-核心概念


在切点表达式中指定选择哪个连接点,意思是这个共性功能应用到具体的方法中。

例如,com.itheima.service.impl.DeptServiceImpl.list(),就是recordTime只用在指定的list()方法中。


06-AOP进阶-通知类型


通知类型如下图。重点掌握@Aroud


@PointCut注解提取公共切点表达式,降低冗余度,根据需求修改权限。


07-AOP进阶-通知顺序


通知顺序如下图。


08-AOP进阶-切入点表达式-@execution


常见的两种切入点表达式。


切点表达式-execution。

注意:包名.类名,一般不省略,提高效率。

使用通配符描述切入点。


09-AOP进阶-切入点表达式@annotation


在对应的方法上加上注解就行。


10-AOP进阶-连接点


@Around类型用ProceedingJointPoint

其他四种类型用JointPoint

其他四种。


11-AOP案例-记录日志操作


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值