zoukankan      html  css  js  c++  java
  • Spring课程 Spring入门篇 5-1 aop基本概念及特点

    课程链接:

    概念:

    1    什么是aop及实现方式

    2    aop的基本概念

    3    动态代理什么意思

    1    什么是aop及实现方式

    1.1  aop,面向切面编程,比如:唐僧取经需要经过81难,多一难少一难都不行。孙悟空要经过27难,唐僧27难,猪八戒9难,沙僧18难。每个人统计自己的难数。这样造成业务冗杂,现在把统计经过的劫难数交给观音,唐僧只用骑马,悟空只用降妖除魔,八戒只用吃,沙僧只用担行李就行了。

    实际应用中只是把统计劫难数换成了事务服务,日志管理,安全验证等。

    1.2  实现方式有预编译或者运行期动态代理

    预编译:aspectj

    运行期动态代理:(JDK代理,CGLib动态代理)

    Springaop、JbossAop

    2    aop的基本概念

    基本术语(一些名词):

    (1) 织入(Weaving)
    织入是指将切面代码插入到目标对象的过程。代理的invoke方法完成的工作,可以称为织入。

    (2) 切面(Aspect)
    切面泛指[*交叉业务逻辑*]。事务处理和日志处理可以理解为切面。常用的切面有通知(Advice)与顾问(Advisor)。实际就是对主业务逻辑的一种增强。

    (3)切入点(PointCut)
    切入点指切面具体织入的方法
    注意:被标记为final的方法是不能作为连接点与切入点的。因为最终的是不能被修改的,不能被增强的。

    (4)通知(Advice)
    通知是切面的一种实现,可以完成简单的织入功能。通知定义了增强代码切入到目标代码的时间点,是目标方法执行之前执行,还是执行之后执行等。切入点定义切入的位置,通知定义切入的时间。

    (5)顾问(Advisor)
    顾问是切面的另一种实现,能够将通知以更为复杂的方式织入到目标对象中,是将通知包装为更复杂切面的装配器。

    (6)目标对象(Target)
    目标对象指将要被增强的对象。即包含主业务逻辑的类的对象。

    (7) 连接点(JoinPoint)
    连接点是指可以被切面织入的方法。通常业务接口的方法均为连接点

    通知的(advice)的类型:

    前置通知(Before advice):连接点之前通知

    返回后通知(After returning advice):连接点执行完成之后通知

    抛出异常后通知(After throwing advice):抛出异常退出执行时通知

    后通知(After (finally)advice):不论正常执行结束还是异常退出时执行的通知

    环绕通知(Around advice):包围一个连接点的通知  

    3    动态代理什么意思

    举个例子吧,比如说你暗恋一个小美女,你给她写了个情书,你不好意思直接给她,就让我转给她。
    我也暗恋这个小美女,我收到你的情书以后,我送你的情书之前跟小美女说你这个人人品差长得丑还没钱,然后再把你的情书给她。
    动态代理就是这个过程。本来是你和小美女之间的关系,但中间让我转达一下,我在转达的前后可以干一些自己的事情。更具体的说,就是A调用B,但不直接调用,A通过调用C,C再调用B,C在调用B的前后可以做一些自己的事情,比如说打日志、权限验证等,这样就把业务代码与系统代码分开,同时减少了A和B之间的耦合。
    动态代理的经典应用是Spring AOP。有兴趣可以学学。

  • 相关阅读:
    什么是page fault?
    [转载] 使用 Docker 部署 openstf 平台
    dockerfile中设置python虚拟环境+gunicorn启动
    python虚拟环境
    appium 多设备
    jenkins初始化和安装插件
    安装docker-ce
    Seleium Grid配置中的MaxInstances和MaxSession详解
    【GIS】GeoServer-Cache
    【GIS】GeoServer-服务权限
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/10674669.html
Copyright © 2011-2022 走看看