一.AOP底层使用动态代理
(1)有两种情况动态代理
第一种有接口情况,使用JDK动态代理
第二种没有接口情况,使用CGLIB动态代理
1、使用JDK动态代理,使用Proxy类里面的方法创建代理对象
(1)创建接口,定义方法

(2)创建接口实现类,实现方法

(3)使用Proxy类创建接口代理对象



二.AOP术语
1、连接点
类里面哪些方法可以被增强,这些方法称为连接点
2、切入点
实际被真正增强的方法,称为切入点
3、通知(增强)
(1)实际增强的逻辑部分称为通知(增强)
(2)通知有多钟类型
*前置通知
*后置通知
*环绕通知
*异常通知
*最终通知 类似于finally
4、切面是动作
(1)把通知应用到切入点过程
三.AOP操作
1、Spring框架一般都是基于AspectJ实现AOP操作
(1)什么是AspectJ?
AspectJ不是Spring组成部分,独立AOP框架,一般把AspectJ和Spring框架一起使用,进行AOP操作

2、基于Aspect实现AOP操作
(1)基于xml配置文件实现
(2)基于注解方式实现(使用)
3、在项目工程里面引入AOP相关依赖

4、切入点表达式
(1)切入点表达式作用:知道对哪个类里面的哪个方法进行增强
(2)语法结构:
execution([权限修饰符][返回类型][类全路径][方法名称] ([参数列表]))

举例1:对dwd.com.spring5.dao.BookDao里面的add方法增强
execution(* dwd.com.spring5.dao.BookDao.add(…))
*代表任意修饰符,返回类型可以不写,(参数)

举例2:对dwd.com.spring5.dao.BookDao里面的所有方法增强
execution(* dwd.com.spring5.dao.BookDao.*(…))

举例3:对dwd.com.spring5.dao包里面的所有类里面所有方法增强
execution(* dwd.com.spring5..(…))
四.基于注解对AspectJ操作
1、创建类,在类里面定义方法

2、创建增强类(编写增强逻辑)
前置通知就是add方法之前执行

3、进行通知的配置
(1)在spring配置文件中,开启注解扫描
可以使用xml配置,也可以写配置类(全注解开发)
引入两个名称空间context和aop

(2) 使用注解创建User和 UserProxy对象

(3)在增强类上面添加注解@Aspect

(4) 在spring配置文件中开启生成代理对象

4、配置不同类型的通知
(1)在增强类的里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置

测试

几种通知

异常通知

5、相同切入点的抽取


6、有多个增强类多同一个方法进行增强,设置增强类优先级

(1)在增强类上面添加注解@Order(数字类型值),数字类型值越小优先级越高

AOP(基于注解对AspectJ操作)相关推荐

  1. java @around,Spring AOP基于注解的Around通知

    是一种建议类型,可确保方法执行前后的通知可以运行. 以下是通知的语法: 语法 @Pointcut("execution(* com.yiibai.Student.getAge(..))&qu ...

  2. 基于注解方式@AspectJ的AOP

    启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置: <aop:aspectj-autoproxy/> 这样Spring就能发现@ ...

  3. AOP基于注解环绕通知

    核心代码 (前提配置好文件) @Aspect // 1. 让当前类变成切面类 @Component // 2. 让spring接管切面类的创建 public class LogAspect {/*** ...

  4. 【Spring AOP】基于注解的 AOP 编程

    Spring AOP 基于注解的 AOP 编程的开发 开发步骤 切入点复用 切换动态代理的创建方式(JDK.Cglib) AOP 开发中的一个坑(业务方法互相调用) AOP 知识总结 更多内容请查看笔 ...

  5. spring中自定义注解(annotation)与AOP中获取注解___使用aspectj的@Around注解实现用户操作和操作结果日志

    spring中自定义注解(annotation)与AOP中获取注解 一.自定义注解(annotation) 自定义注解的作用:在反射中获取注解,以取得注解修饰的类.方法或属性的相关解释. packag ...

  6. 基于注解的Spring AOP的配置和使用--转载

    AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程.可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. ...

  7. SpringAOP描述及实现_AspectJ详解_基于注解的AOP实现_SpringJdbcTemplate详解

    AOP AOP特点: 面向切面编程, 利用AOP对业务逻辑的各个部分进行抽取公共代码, 降低耦合度, 提高代码重用性, 同时提高开发效率. 采取横向抽取, 取代传统纵向继承体系重复性代码 解决事务管理 ...

  8. Spring —— 基于注解的Aop在同一类下产生嵌套时切面不生效问题产生原因及解决

    一.背景介绍 由于程序中大量方法需要监控执行耗时,因此写了基于注解的Aop类来减少重复代码,主要作用是通过环绕通知在方法执行前后进行耗时计算,最后输出到日志/监控. 相关代码如下: // 注解 @Re ...

  9. AspectJ基于xml和基于注解

    一.基于xml 执行的切入点中具体方法有返回值,则方法结束会立即执行后置通知,然后再执行环绕通知的放行之后的代码: 2.连接点即所有可能的方法,切入点是正真被切的方法,连接点方法名: 其中,只有环绕通 ...

最新文章

  1. Visual Studio调试时遇到的问题:生成下面模块时,启用了优化或没有调试信息
  2. 中国博士开发可交互全球疫情地图,登上柳叶刀,GitHub已有4500星成为热榜第四...
  3. mysql 运行 sql 脚本
  4. 高阶产品经理的自我修养:项目管理之启动
  5. SSM中怎样使用JUnit4+spring-test编写单元测试
  6. jqplot学习笔记
  7. Linux设备模型(总结)
  8. linux --- vsftp
  9. K8S_Google工作笔记0001---K8S学习过程梳理
  10. paip.提升用户体验----自定义移位操作符重载
  11. stream分组求和
  12. 5G WIFI DFS介绍
  13. python之OCR文字识别
  14. 天线基础知识(四)接收灵敏度
  15. java中修改上传图片大小,springMVC MultipartFile 上传图片时修改图片大小
  16. 虚幻引擎 Unreal Engine 详细笔记 根据谌嘉诚视频无遗漏总结 快速上手
  17. python3爬虫基本操作——抓取股票信息
  18. 瑞禧整理常见的抗体药物偶连物(ADC-Linker)名称及结构式大全
  19. git命令--切换分支
  20. Hive查询分析计算:股票分析

热门文章

  1. 信息学奥赛C++语言:三位数的求和
  2. 数组中最大连续子数组和,最大连续子数组积,最大递增子序列
  3. 4 CO配置-企业结构-分配-把控制范围分配给经营范围
  4. python 数据库查询结果_python 数据库查询结果
  5. [Unity] ACT 战斗系统学习 7:使用 ScriptableObject 制作角色属性 2
  6. cad转shp格式带属性_Excel、Word、PPT、CAD办公格式怎么转?方法汇总,可批量
  7. css高度自动填满_Unity--自动版面(Grid Layout Group)
  8. 安装nrm,报错request@2.88.2: request has been deprecated, see https://github.com/request/request/issu
  9. js 字符串、数值之间的转换
  10. html,css颜色,色系