Spring AOP概述及底层实现原理

Spring AOP概述及底层实现原理

aop概述

AOP全称为Aspect Oriented Programming的缩写,意为:面向切面编程。将程序中公用代码进行抽离,通过动态代理实现程序功能的统一维护的一种技术。
使代码耦合性降低,提高了开发的效率。

aop可以完成的功能

日志记录,性能统计,安全控制,事务处理,异常处理等等。

aop与oop区别

OOP:(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。java实体类就是面向对象编程的最准确的体现。
AOP:则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。

aop相关术语

目标对象target:指的是需要被增强的对象,由于spring aop是通过www.jsr9.com代理模式实现,从而这个对象永远是被代理对象。

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

切入点:表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方
简单说切入点是指我们要对哪些连接点进行拦截的定义。

通知:所谓通知是指拦截到连接点之后所要做的事情就是通知,通知分为前置通知,后置通知,异常通知,最终通知,环绕通知

切面aspect:是切入点和通知的结合

织入weaving:织入是一个过程,是将切面应用到目标对象从而创建出AOP代理对象的过程,织入可以在编译期,类装载期,运行期进行。(Spring采用动态织入,而aspectj采用静态织入)

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

spring AOP底层实现介绍

spring的AOP底层是由 JDK提供的动态代理技术 和 CGLIB(动态字节码增强技术)实现。

**JDK动态代理:**Jdk动态代理只针对于接口操作。

CGLIB:可以针对没有接口的java类和有接口的java类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值