框架专题 spring AOP总结及使用 + AOP的两种代理 + spring事务

spring的AOP(切面编程)

需求:接口 (1000个方法 想要修改在其中的某一个方法)

代理(jdk动态代理 cglib代理)

jdk动态代理(只能修改接口中的方法)
cglib代理 (只能修改类中的方法)

1、jdk的动态代理

接口
在这里插入图片描述
实现类
在这里插入图片描述
代理类
在这里插入图片描述
测试
在这里插入图片描述

2、cglib代理


在这里插入图片描述
代理类
在这里插入图片描述
测试
在这里插入图片描述

3、AOP专业名词解释

JoinPoint(连接点) 在需要修改的类中,将要修改的方法
PointCut(切入点) 在需要修改的类中,已经修改过的方法
Advice(通知) 在原有的功能上新添加的功能
aspect(增强) 在原有的功能上新添加的功能

Target(目标对象) 被代理的对象
weaving(织入) 增强代码的过程

4、用springAop的方式对指定的方法进行增强

a、导入jar包
b、写一个类
目标类
在这里插入图片描述
通知类

package com.ujiuye.aop;

import org.aspectj.lang.ProceedingJoinPoint;

public class MyAdvice {
    /**
     * 在对方法进行增强的时候,有几种方式可以进行增强
     * 前置通知(在原来的代码之前新增功能)
     * 后置通知(在原来的代码之后新增功能)
     * 环绕通知(在原来的代码的前后都新增功能)
     * 异常通知(在原来的代码出现异常的时候,才能添加新的功能)
     */
    // 前置通知
    void before(){
        System.out.println("前置通知");
    }
    //后置通知
    void after(){
        System.out.println("后置通知");
    }
   // 环绕通知
    Object huanrao(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕的头");
        Object proceed = pjp.proceed();
        System.out.println("环绕的结束");
        return  proceed;
    }
   // 异常通知
    void excep(){
        System.out.println("异常通知");
    }
}

c、写配置文件
在这里插入图片描述
切入点表达式的规范:

execution();
修饰符 可以省略不写
方法的返回值 不能省略但是可以用表示
目标类所在的包 不能省略,但是可以用

目标类的名称 不能省略但是可以用*
方法名 不能省略但是可以用*
方法的参数 用…带表示

根据这个规范我们可以这样写切入点表达式

* *..*.*.*(..)   这样看着很帅但是不可取
正规的方式
* com.ujiuye.service.impl.*.save(..);

d、测试

在这里插入图片描述

5、spirngAOP的注解开发

用注解开发和xml配置文件的方式有两个不同点,其它代码都一样

A、在配置文件中
在这里插入图片描述
B、在通知中
在这里插入图片描述

6、spring事务开发

事务:
原子性 一致性 隔离性 持久性

事务的传播:
REQUIRED(如果有事务就加入事务,如果没有就创建)

事务的隔离:
读取没有提交的数据(脏读,不可以重复读)
读取已经提交的数据(幻读,重复读)
可重复读
串行化

需求:A给B转账 A有1000 B 有1000
如果:A 给B转账,在转账的过程中出现问题,会导致B没有收到钱,但是A的钱也没了?
解决方案:在转账的过程中加入事务,如果出现异常会回滚

A、用配置文件的方式使用事务
配文件的有关事务的配置
在这里插入图片描述
业务逻辑层代码
在这里插入图片描述
B、用注解的方式开发事务(推荐使用)
配置文件
在这里插入图片描述
业务逻辑层代码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值