【Spring篇】AOP

spring的俩大核心概念:IOC和AOP


前言

此篇仅为个人初期学习笔记,如有错误,请xdm指正

一、AOP基本概念

1.简介

  • AOP的意思是面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,把大问题拆分成小问题从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
  • 可以这样理解:在不修改源代码的基础上,增加新的功能。
  • 修改源代码,成本极大,伤筋动骨。

2.案例理解

用户登录,需要添加一个权限判断的功能
在这里插入图片描述

二、AOP实现方式(动态代理)

1.有接口

使用 JDK动态代理:使用proxy类里面的方法创建对象
实质:创建接口实现类的代理对象

通过Proxy的newProxyInstence方法
​ 三个参数
​ 第一个参数:类加载器,传递一个类的class对象
​ 第二个参数:增强方法所在的类实现的接口,是一个数组,意味着可以是多个
​ 第三个参数:代理类,创建一个类实现接口InvocationHandle,创建代理对象,写增强方法

2.无接口

使用CGLIB动态代理
​创建子类的代理对象

3.关键术语

1.连接点

类中可以被增强的方法

2.切入点

类里面实际被增强的方法

3.通知(增强)

(1)增强的逻辑部分称为通知(增强的功能)
(2)通知的类型:
前置通知:在功能的前面进行增强

后置通知:在功能的后面进行增强
环绕通知:在功能的前后都进行增强
异常通知:当出现异常时,执行的代码
最终通知finally:无论如何最终都会执行的代码

4.切面

把通知运用到切入点的过程,简单理解:把增强的代码放入整个项目中

5.实现AOP操作

a>介绍
  1. Spring框架一般都是基于AspectJ实现AOP操作的
  2. AspectJ不是Spring的组成成分,独立于AOP框架
    一般把AspectJ和Spring框架一起使用,进行AOP操作
  3. 切入点表达式
    使用切入点表达式,可以让spring知道对哪个类中的哪个方法进行增强
    execution([权限修饰符][返回值类型][类全路径][方法名称][参数列表])
b>基于AspectJ实现AOP
  1. 注解实现
    争对不同的通知提供不同的方法,加上对应的注解
  2. XML配置文件实现
    a> 提取公共切入点
    争对不同的通知@PointCut(value = “execution()”)
  3. 增强类的优先级
  4. 完全注解开发:争对不同的通知
  • 用配置类替换配置文件
  • @Configuration----注明配置类
  • @ComponentScan(basePackges=(“…”))----开启组件扫描
  • @EnableAspectJAutoProxy(proxyTargetClass=true)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小B学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值