勿谓今日不学而有来日,勿谓今年不学而有来年。
日月逝矣,岁不我延。

Spring的AOP

AOP思想最早有AOP联盟组织提出!

面向切面编程(AOP)是面向对象编程(OOP)的延申。

OOP在于类的增强上采用纵向继承的方式实现,而AOP对于类的增强采用横向抽取的方式实现。横向抽取可以理解为一个代理机制(AOP的底层就是采用代理机制),创建目标类的代理之后访问对象就变成了访问其代理。

常用场景

在不改变源码的情况下:

  • 权限校验
  • 日志记录
  • 性能监控
  • 事务管理,等

Spring底层AOP实现

  • JDK动态代理:只能对实现了接口的类产生代理(实现接口默认采用)。
  • Cglib动态代理:对没有产生接口的类生产代理(生成目标类的子类对象)

AOP的几个术语

  • Joinpoint:连接点  —可以被拦截到(增强)到的点(方法)
  • Pointcut:切入点   —真正被拦截(增强)的点(方法)
  • Advice:通知、增强  —对某方法进行的增强方法 (Advice是方法层面的增强)
  • Introduction:引介  —类层面的增强  (动态增加方法和属性)
  • Target:目标对象  —被增强的对象
  • Weaving:织入  —将通知、增强(Advice)应用到目标对象(Target)的过程
  • Proxy:代理对象  —被织入(Weaving)增强后的对象
  • Aspect:切面  —多个切入点和通知的组合,定义通知应用到那个切入点

Spring的通知类型

  • 前置通知
  • 后置通知
  • 环绕通知
  • 异常抛出通知
  • 最终通知
  • 引介通知

关于AOP的XML和注解开发以及几种常用的通知的配置使用参见:

https://github.com/llanc/SSH_Learn/tree/master/Spring-03-AOPhttps://github.com/llanc/SSH_Learn/tree/master/Spring-04-AopAnnotation

赞(0)
未经允许不得转载:喋喋不休 » Spring的AOP

评论 抢沙发

评论前必须登录!

 

精品网站

有券无忧电脑壁纸精选