day03_Spring—面向切面编程aop

本文深入探讨了Spring的AOP(面向切面编程)概念,包括其功能和底层动态代理实现,详细阐述了JDK和CGLIB两种动态代理方式。通过实例解析了如何在XML和注解方式下配置并实现AOP,涵盖了切点表达式、通知类型等关键知识点,旨在帮助读者全面掌握Spring AOP的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、AOP概念

1.什么是AOP

aop:面向切面编程

2.AOP的功能

  • B代码、C代码、D代码的运行都需要A代码,你如果把AB捆绑、把AC捆绑、把AD捆绑以后虽然解决了B、C、D对A代码的需要,但是如果你要是想要修改A代码的话就需要修改三个地方,用专业术语讲叫做“代码重复,不便于维护”。
  • 假如现在需要执行B代码,你现在可以在配置文件中声明B用到了A代码,当代码加载就内存后先执行A再执行B。这样代码就没有耦合死。
    在这里插入图片描述

3.AOP的底层实现

动态代理在Day10_Filter和Listener中学过。

实际上,AOP 的底层是通过 Spring 提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。

在这里插入图片描述

二、AOP的两种动态代理

1.基于jdk的动态代理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.基于cglib的动态代理

第一步需要导包
cglib是第三方的需要导包,但值得注意的是spring后期已经将cglib集成到spring核心里了,所以早期的版本需要自己导cglib的包,后期的就不需要了
在这里插入图片描述
代码
在这里插入图片描述
在这里插入图片描述

三、正式学习AOP

Spring 的 AOP 实现底层就是对上面的动态代理的代码进行了封装,封装后我们只需要对需要关注的部分进行代码编写,并通过配置的方式完成指定目标的方法增强。

1.AOP 的相关术语

  • Target(目标对象):
  • Proxy (代理):
  • Joinpoint(连接点):可以被增强的方法叫连接点
  • Pointcut(切入点):真正被增强了的方法叫做切入点。(可以被增强的方法叫连接点,而切入点是那些真正被
    增强了的方法——可以成为班长和已经成为班长的区别)
  • Advice(通知/ 增强):存放着那些增强的方法
  • Aspect(切面):是切入点和通知的结合
  • Weaving(织入):将切入点和通知结合的过程就是织入。(配置的过程就是织入)

2.AOP的底层实现
你要执行你的切入点方法,一执行spring就监控到,帮你创建代理对象,然后调用代理对象中和切入点的同名的方法,调用时内部会执行目标方法加功能增强方法。

3.AOP 底层使用哪种代理方式
在 spring 中,有jdk代理和cglib代理,框架会根据目标类是否实现了接口来决定采用哪种动态代理的方式。

4.开发明确事项:

    谁是切点(切点表达式配置)
    谁是通知(切面类中的增强方法)
    将切点和通知进行织入配置

四、xml的方式实现aop

1.快速入门

  1. 导入 AOP 相关坐标
  2. 创建目标接口和目标类(内部有切点)
  3. 创建切面类(内部有增强方法)
  4. 将目标类和切面类的对象创建权交给 spring
  5. 在 applicationContext.xml 中配置织入关系
  6. 测试代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.切点表达式的写法

在这里插入图片描述

3.aop通知的类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.切点表达式的抽取

在这里插入图片描述

五、注解方式实现aop

1.快速入门

在这里插入图片描述

2.注解通知的类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.切点表达式抽取

在这里插入图片描述

感谢浏览和收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BlackTurn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值