一、AOP简介:
AOP(Aspect Oriented Programming)面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待。能在不改变原有的逻辑的基础上,增加一些额外的功能。简单说就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。
二、AOP的一些术语和概念:
- Aspect(切面):通常是一个类,里面可以定义切入点和通知
- Proxy(代理):将通知应用到目标对象后创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类
- JointPoint(连接点):程序执行过程中插入切面的点,是对象操作过程中的某个阶段点,一般是方法的调用。被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器
- Pointcut(切入点):就是连接点的集合切面与程序流的交叉点及程序的切入点,准确的说就是切面注入到程序中的位置,在程序中主要体现为书写切入点表达式
- Advice(通知):在切面某个特定的连接点上执行的动作,spring有5种类型MethodBeforeAdvice(前置),AfterReturningAdvice(后置),MethodInterceptor(环绕:前后皆有),ThrowsAdvice(异常),IntroductionInterceptor(引介通知:在目标类中增加一些新的方法和属性)
- 目标对象(Target Object): 包含连接点的对象。也被称作被通知或被代理对象。可以是编写的类也可以是需要添加指定行为额的第三方类。
- weaving(织入):将切面应用到目标对象并创建一个被通知的对象的过程。三种方式,编译期织入(静态代理)、类加载器织入、运行期织入。
三、案例
(点击下方链接即可跳转,正在补充中。。。)