day14SpringBootWeb事务&AOP总结

1. 事务是什么?在MySQL中是怎么去开启,提交,回滚事务的。

事务是一组操作的集合,要么全部执行成功,要么全部执行失败

MySQL中:

开启事务:start transaction / begin

提交事务:commit

回滚事务:rollback

2. 在Spring中怎么管理事务,用什么注解,在那个层次进行使用可以有效管理事务

@Transactional

在service层可以有效管理事务   定义在方法上,类上,接口上

3. 事务管理时规则:如果方法能够正常执行完自动提交事务,如果出现异常自动回滚事物。事务默认识别的异常是运行时异常,如果想要识别到编译时异常从而实现回滚,该怎么操作?

两种方案:

方案一 :定义:@Transactional(rollbackFor=Exception.class) 然后throws 抛出异常

方案二 :try catch 捕获异常 转换为运行时异常后后再抛出

4. 事务的传播方式有哪些,含义是怎样?

常用的传播方式有两种:

一:REQUIRED (默认值)需要事务,有则加入,无则创建新事务。大部分情况下用该传播行为

二:REQUIRS_NEW 需要新事务,无论有无,总是创建新事务。不希望事务之间相互影响时使用该传播行为,比如删除部门前要先删除该部门下的员工,不论部门是否删除,该部门下的员工一定会删除成功。

5. AOP叫做什么,有什么作用?

AOP:面向切面编程

减少代码冗余,提高代码复用性,提高开发效率

6. 如果要完成一个AOP的入门案例,需要有哪些步骤?

一:pom.xml引入依赖

二:定义一个切面类,抽取重复代码

三:用@Aspect,@Component标识当前类是一个AOP类并被Spring容器管理

四:配置公共代码(重复代码)作用于哪些目标方法

五:执行目标方法

六:测试运行

7. AOP的概念理解:连接点,通知,切入点,切面 ?

连接点: joinPoint   要执行的目标方法(类里面哪些方法可以被增强

通知(增强):Advice    重复的逻辑代码(实际增强的逻辑部分称为通知

切入点: PointCut   @Around 定义的表达式 (连接点的条件)(实际被真正增强的方法

切面:Advice通知+切入点,整个类(把通知应用到切入点过程

8. 通知有哪些类型?

前置通知  @Before:

此注解标注的通知方法在目标方法前被执行

环绕通知  @Around :

此注解标注的通知方法在目标方法前、后都被执行

后置通知  @AfterReturning:

此注解标注的通知方法在目标方法后被执行,有异常不会执行

异常通知 @AfterThrowing:

此注解标注的通知方法发生异常后执行

最终通知  @After:

此注解标注的通知方法在目标方法后被执行,无论是否有异常

9. 如果有不同切面的通知,增强相同的方法,执行顺序是怎样的?

一:按照bean类的名称字母排序

二:用@order(数字)加在切面上控制顺序

目标前的通知方法:数字小先执行

目标后的通知方法:数字小后执行

10. 切点表达式有几种,具体怎么定义?

一:execution(返回值类型 包名.类名.方法名(参数类型))

  • * 可以通配任意返回值类型、包名、类名、方法名、或任意类型的一个参数
  • .. 可以通配任意层级的包、或任意类型、任意个数的参数

 execution(* com.itheima.service.impl.*.*(..))

如:在切面的方法上加@Before("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")

二:annoation()根据标记的 注解匹配

定义一个随意一个@...的标记类   如@Flag,

 类上设置@Target(ElementType METHOD)目标作用范围  方法

@Retention(RetentionPolicy.RUNTIME)生命周期

在切面的方法上加  @Before("annotation(com.itheima.aop.Flog)")

在目标方法加@Flag标记性注解

annotation(com.itheima.aop.Flog)

如:@Before("annotation(com.itheima.aop.Flog)")

11. 如果有多个通知的切点表达式一样,怎么抽取?

@PointCut

在切面定义一个方法,抽取共性的(重复的)切点表达式如:

12. 连接点是什么,可以获取哪些信息?

连接点:目标方法  或 要增强的方法     可以被拦截的方法都叫做连接点

可以获取:

A. 获取拦截的类名

B. 获取拦截的方法

C. 获取方法的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值