简单理解StringAOP

目录

1、引用AOP原因

2、什么是AOP

3、AOP优点

4、AOP应用场景

5、AOP实现方式

6、AOP基本术语

6.1 Joinpoint(连接点)

6.2 Pointcut(切入点)

6.3 Advice(通知/增强)

6.4 Introduction(引介)

6.5 Target(目标对象)

6.6 Weaving(织入)

6.7 Proxy(代理)

6.8 Aspect(切面)


1、引用AOP原因

​         介绍AOP之前,我们首先来了解什么是OOP,OOP(Object Oriented Programming)既面向对象编程,所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。其引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟对象公共行为的一个集合。

        当我们需要分散对象的公共行为时,OOP就并不是很好的选择,OOP虽然可以实现,但代码大量复用。例如记录日志功能,在所有对象层次中往往水平存在日志代码,而日志代码与对象的核心功能不会发生直接的关系。又如安全控制、事务管理、异常处理等也是如此,这种水平分布在各处的、与核心功能无关的代码被称为切面。这些代码会散落穿插在各个业务逻辑中,非常冗余且不利于维护,因此引用AOP。

2、什么是AOP

        SpringAOP的全称是Aspect Oriented Programming,是一种编程思想,是对OOP的补充和完善,可以进一步提高开发效率。在AOP中,Aspect的含义更多的理解为“切面”比较合适,因此也称之为面向切面编程。传统架构是至上而下的,后期想要从中间切入写代码添加功能,比如记录日志、事务管理、异常处理等,这时候我们就需要AOP专门把这些代码给抽象了出来。

3、AOP优点

  1. 减少重复代码
  2. 提高开发效率
  3. 代码简洁
  4. 维护方便且高效

4、AOP应用场景

  • 日志记录
  • 事务控制(调用方法前开启事务, 调用方法后提交关闭事务 )
  • 权限检查(例如SpringSecurity)
  • 检测方法运行时间
  • 数据源代理
  • 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )

5、AOP实现方式

  • JDK动态代理

java提供动态代理技术,可以在运行时创建接口的代理实例。SpringAOP默认采用这种方式,在接口的代理实例中织入代码。(基于接口的动态代理技术)

  • CGLib动态代理

采用底层的字节码技术,在运行时创建子类代理实例,当目标对象不存在接口时,SpringAOP会采用这种方式在子类实例中织入代码。(基于父类的动态代理技术)

6、AOP基本术语

6.1 Joinpoint(连接点)

        所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的连接点

6.2 Pointcut(切入点)

        所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。

6.3 Advice(通知/增强)

        所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。通知的类型:前置通知,后置通知,异常通知,最终抛出通知,环绕通知。

通知的配置语法:

<aop:通知类型 method=“切面类中方法名” pointcut=“切点表达式"></aop:通知类型>
名称标签说明
前置通知<aop:before>指定增强的方法在切入点之前执行
后置通知<aop:after-returning>指定增强的方法在切入点之后执行
环绕通知<aop:aroud>指定增强的方法在切入点之前和之后都执行
异常抛出通知<aop:throwing>指定增强的方法在出现异常时执行
最终通知<aop:after>无论增强的方式执行是否有异常都会执行

6.4 Introduction(引介)

        引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或 Field。

6.5 Target(目标对象)

        代理的目标对象

6.6 Weaving(织入)

        是指把增强应用到目标对象来创建新的代理对象的过程。spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。

6.7 Proxy(代理)

        一个类被 AOP 织入增强后,就产生一个结果代理类。

6.8 Aspect(切面)

        是切入点和通知(引介)的结合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值