【day14 SpringBoot 事务管理+AOP】

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

    事务:一组操作的集合,要么同时成功,要么同时失败。

    MySQL:start transection/Begin 开启 commit 提交 rollback 回滚

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

    使用:@Transactional 注解

    在(业务层) Service 层的类上、方法上、接口上

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

    两种方案:

    方案一:将异常抛出,并在@Transactional中指定异常rollbaceFor=Exception.class

    需要一层一层抛出,所以一般使用方案二

    方案二:使用【try...catch】将异常捕获,将编译时异常转变为运行时异常抛出

    (Throw new RuntimeException(e))将e编译时异常转变为运行时异常

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

    REQUERED:(默认值)需要事务,有则加入,无则创建新事务

    REQUERES_NOW: 需要新事务,无论有无,都会创建新事务

  5. AOP叫做什么,有什么作用?举一个5岁孩子就能理解的例子?

    AOP:面向切面编程

    作用:将重复的逻辑抽离出来,在不修改原始逻辑的基础上对原始功能进行增强

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

    1.导入起步依赖

    2.定义一个新的类,将公共代码抽离。

    3.标识当前类是一个AOP类(@Aspect),并被Spring容器管理(@Component)。

    4.配置公共代码作用于哪些方法

    5.执行目标方法

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

    连接点:JoinPoint,可以被AOP控制方法的执行(包含方法信息)

    通知:Advice,重复的代码逻辑

    切入点:PointCut,匹配连接的条件

    切面:Aspect,通知加切点(整个类)

  8. 通知有哪些类型?

    @Around:此注解标注通知方法在目标方法前、后都会被执行;

    @Before:此注解标注通知方法在目标方法前执行;

    @After:此注解标注通知方法在目标方法后执行,无论是否有异常;

    @AfterReturning:此注解标注通知方法在目标方法后被执行,有异常不执行;

    @AfterThrowing:此注解标注通知方法发生异常时执行

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

    有两种方案:

    方案一:默认按照切面类名称首字母排序

    目标前的通知方法:首字母靠前的先执行

    目标后的通知方法:首字母靠前的后执行

    方案二:用@Order(数字)加在切面类上来自定义控制顺序

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

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

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

    有两种

    第一种:execution主要根据方法的返回值、包名、类名、方法名、方法参数等信息来匹配

    语法为:execution(访问修饰符?返回值(后需加个空格) 包名、类名?.方法名(方法参数)throws异常?)

    其中带问号的可以省略不写,但是省略的话不能准确确定是哪一个方法,会很消耗性能,建议:不省略

  11. 第二种:@annotation切点表达式也支持匹配目标方法是否有注解。

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

    使用@PointCut把公共切点表达式的部分抽离出来,需要用到切点表达式时直接引用该切点表达式就可以

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

    简单理解就是目标方法;在Spring中JoinPoint抽象了连接点,用它可以获得方法执行时的相关信息,

    比如:方法名,方法参数类型,方法实际参数等等

    对于@Aount通知,获取连接点信息只能用ProceedingJoinPoint

    对于其他四种通知,获取连接点信息只能用JoinPoint,它是 ProceedingJoinPoint 的父类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值