什么是AOP
AOP是Spring的核心内容之一,Spring能有今天,它功不可没。那什么是AOP呢?
我们先来让他和OOP进行对比一下,下面有一段描述比较不错,我就直接引用了。
AOP的一些基础概念
描述AOP常用的一些术语有通知(Adivce)、连接点(Join point)、切点(Pointcut)、切面(Aspect)、引入(Introduction)、织入(Weaving)。
通知
就是你定义的一些动作,也就是的 安全,事物,日志等。
通知的五种类型:
连接点
说白了就是能被切入的点。理论上, 程序执行过程中的任何时点都可以作为作为织入点, 而所有这些执行时点都是 连接点。
切点
就是你选择切入的连接点。
切面
通知和切点组成切面。通知说明了干什么和什么时候干(什么时候通过方法名中的before,after,around等就能知道),而切入点说明了在哪干(指定到底是哪个方法),这就是一个完整的切面定义。
引入
允许我们向现有的类添加新方法属性。这不就是把切面(也就是新方法属性:通知定义的)用到目标类中吗
织入
把切面应用到目标对象来创建新的代理对象的过程。有3种方式(编译时,类加载时,运行时),spring采用的是运行时。
AOP实现方式
AOP实现一般分为三种,以它织入的时期进行分类。
而动态代理一般有两种实现方式,JDK自带的和CGLIB。Sring会动态选择代理的方式。JDK需要提供一个接口,而CGLIB则不用,它是生成一个增强的子类。