0.SpringAop之基础

作者: 土豆肉丝盖浇饭 | 来源:发表于2018-01-23 20:09 被阅读14次

最近在看Spring Aop的源码,大致流程也差不多看懂了,希望通过写几篇源码解析来更加细致的了解Spring中的Aop,这一篇介绍一下Aop里面的概念以及怎么使用

1.核心概念

  1. 横切关注点
    对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点
  2. 切面(aspect)
    类是对物体特征的抽象,切面就是对横切关注点的抽象
  3. 连接点(joinpoint)
    被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器
  4. 切入点(pointcut)
    对连接点进行拦截的定义
  5. 通知(advice)
    所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类
  6. 目标对象
    代理的目标对象
  7. 织入(weave)
    将切面应用到目标对象并导致代理对象创建的过程
  8. 引入(introduction)
    在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

2.Spring对Aop的支持

Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供。Spring创建代理的规则为:

  1. 默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了

  2. 当需要代理的类不是代理接口的时候,Spring会切换为使用CGLIB代理,也可强制使用CGLIB

AOP编程其实是很简单的事情,纵观AOP编程,程序员只需要参与三个部分:

  1. 定义普通业务组件

  2. 定义切入点,一个切入点可能横切多个业务组件

  3. 定义增强处理,增强处理就是在AOP框架为普通业务组件织入的处理动作

所以进行AOP编程的关键就是定义切入点和定义增强处理,一旦定义了合适的切入点和增强处理,AOP框架将自动生成AOP代理,即:代理对象的方法=增强处理+被代理对象的方法。

3.如何使用Aop

针对Spring Aop常用的几种使用方式,我写了几个demo,git地址为git地址

使用方式为以下几种

  1. 声明式Aop:ProxyFactoryBean
  2. 编程式Aop:ProxyFactory
  3. 声明式Aop基于配置:DefaultAdvisorAutoProxyCreator
  4. 声明式Aop基于配置:Aspect-xml
  5. 声明式Aop基于注解:Aspect-Annotation

相关文章

  • 0.SpringAop之基础

    最近在看Spring Aop的源码,大致流程也差不多看懂了,希望通过写几篇源码解析来更加细致的了解Spring中的...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • Java 基础学习笔记

    Java 基础之 面向对象六大原则 Java 基础之 重写和重载的区别和各自使用 Java 基础之巧用Object...

  • dart入门潜修系列教程

    dart入门潜修基础篇之基本语法和内置类型dart入门潜修基础篇之方法dart入门潜修基础篇之操作符dart入门潜...

  • R语言基础--数据类型-总结

    R语言基础--数据类型-总结 1、R语言基础--数据类型之向量 2、R语言基础--数据类型之因子 3、R语言基础-...

  • kotlin入门潜修系列教程

    kotlin入门潜修之开门篇—kotlin是什么? kotlin入门潜修之基础篇—基础语法kotlin入门潜修之基...

  • TypeScript基础入门之模块解析(三)

    转发 ## TypeScript基础入门之模块解析(三) 继续上文[TypeScript基础入门之模块解析(二)]...

  • Java基础之LinkedList源码解析

    Java集合源码解析系列 Java基础之HashMap源码解析 Java基础之LinkedHashMap源码解析 ...

  • Java基础之ArrayList源码解析

    Java集合源码解析系列 Java基础之HashMap源码解析 Java基础之LinkedHashMap源码解析 ...

  • Java基础之HashTable源码解析

    Java集合源码解析系列 Java基础之HashMap源码解析 Java基础之LinkedHashMap源码解析 ...

网友评论

    本文标题:0.SpringAop之基础

    本文链接:https://www.haomeiwen.com/subject/frreaxtx.html