zoukankan      html  css  js  c++  java
  • SpringAOP简介

    AOP(Aspect Orient Programming) --- 面向切面编程

    将分散在各个业务逻辑中的相同代码 通过 “横向”切割方式抽取到独立模块中 方式抽取到独立模块中;【它针对的是程序运行中的各个步骤】

    优点:增强代码复用性,使编程人员专注业务于逻辑的实现;

    Spring AOP简介:

    Spring AOP是基于动态代理

    Spring AOP既支持JDK动态代理,也支持CGLib动态代理

    l  如果目标对象实现了接口,默认釆用JDK动态代理

    l  当然可以强制使用CGLib动态代理

    l  如果没有实现接口,则使用CGLib动态代理 

    Spring AOP将增强代码织入连接点的原理:扫描所有类 发现有实现增强接口的类则将其中重写的方法织入.

    AOP的相关术语:

    l  横切关注点

    在一个业务流程中插入与业务无关的系统服务逻辑,这样的逻辑称为横切关注点;

    l  连接点(Joinpoint):

    程序执行过程中明确的点;

    连接点是程序能够应用通知的一个“时机”,例如方法被调用时或异常被抛出时等等。

    l  通知/增强(Advice):

    拦截到连接点之后所要做的事情。

    l  切入点(Pointcut)

    一个通知被引发的一系列连接点的集合,可以看作连接点的抽象。

    通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的地点。例如某个类或方法。

    l  切面(Aspect) = 通知+切入点    

    将横切关注点抽象出来,形成一个对象,就称为切面;

    时间、地点和要发生的“故事”

    l  织入(Weaving)将切面应用到连接点的过程

    l  引入(Introduction)

    引入允许我们向现有的类添加新的方法属性(Spring提供了一个方法注入的功能)

    l  目标(Target)

    即被通知的对象,如果没有AOP,那么它的逻辑将要交叉别的事务逻辑,有了AOP之后它可以只关注自己要做的事(AOP让他做爱做的事)

    l  代理(proxy)

    应用通知的对象,详细内容参见设计模式里面的代理模式

    切面应用到目标对象来创建新的代理对象的过程,织入一般发生在如下几个时机:

    (1)编译时:当一个类文件被编译时进行织入,这需要特殊的编译器才可以做的到,例如AspectJ的织入编译器

    (2)类加载时:使用特殊的ClassLoader,在目标类被加载到程序之前增加类的字节代码

    (3)运行时:切面在运行的某个时刻被织入,SpringAOP就是以这种方式织入切面的,原理应该是使用了JDK的动态代理技术。

    例如:A类中的methodA()调用B类中的methodB()方法

    切入点:methodB()

    切面:B

    连接点:methodA()

    通知(增强):在特定的切入点执行增强处理,确定在methodA()前、中、后处理

  • 相关阅读:
    redis相关问题
    redis的持久化功能
    redis运维常用的server端命令
    Redis运维时需要注意的参数
    redis模拟消息订阅
    redis设置密码
    redis简单的事务
    Redis的配置文件详解
    Linux中安装redis的phpredis扩展
    css动画属性--小球移动
  • 原文地址:https://www.cnblogs.com/zhaojinxin/p/6666309.html
Copyright © 2011-2022 走看看