• 阶段3 2.Spring_08.面向切面编程 AOP_2 spring中的aop术语和细节



    基于接口的动态代理要求,要去被代理对象最少实现一个接口
    基于子类的动态代理没有实现接口的要求。但是要求我们的被代理类不能是最终类

    在Spring中可以选择基于接口还是子类的动态代理

    术语

    大白话。业务层看到方法就都是连接点。IAccountService中的方法。它是连接什么的呢? 连接我们的业务和增强方法中的那个点。
    那么如何把增强的代码也就是事物控制的代码加到我们的业务中来

    这些方法可以加上事物的支持。从而让我们的业务方法,形成完整的业务逻辑

    PointCut切入点


    在业务层中新写一个方法

    创建动态代理的时候,不区分哪个方法全部加了事物

    写上代码判断,当方法是test的时候,直接return 返回。这样不是业务层的所有方法都被事务支持了。test方法就没有事务的支持

    切入点就是被增强的方法。那么test方法没有被增强就不是切入点。
    test()方法是连接点。

    所有的切入点都是连接点。但所有的连接点不一定都是切入点

    advice增强


    通知就是拦截到之后要干的事情
    invoke方法拦截到后,提供了事物的支持

    TansactionManager就是通知。拦截到之后,就是对它进行事物的支持

    通知分为这种类型

    方法之后的就是后置通知,在catch里面的就是异常通知。finally里面的就是最终通知。

    Introducation引介

    现阶段用不到,作为了解即可

    target目标对象

    就是被代理对象

    accountService就是被代理对象

    weaving织入


    原有的Service没法实现事务的支持

    于是用了动态代理技术。创建了一个新的对象,返回了一个代理对象。

    在返回代理对象的时候 从中加入了事务的支持。加入事物支持的过程叫做织入

    proxy代理


    retunr 创建出来的这个对象就是proxy

    Aspect切面


    切入点就是这里哪些方法被增强过

    通知就是提供了公共代码的类

    公共代码什么时候去执行呢?
    建立接入点方法和通知方法再执行调用的对应关系。就是切面。

    配置他们之间的对应关系,哪个Service。哪些方法,这些方法何时执行。整个的过程配置出来 就是切面。

    明确的事情





     

  • 相关阅读:
    [ Scala ]关于scala环境搭建过程中,sbt编译中maven下载失败的解决方案(改成阿里的maven仓库)
    复习笔记:一个简单的动态代理实现
    复习笔记:一个简单的反射工厂Demo
    定时器Timer如何终止运行的问题
    Python RESTful接口开发02
    python 内置模块 logging的使用
    Django项目数据处理的流程是怎样的
    Django-Redis:在Django中使用redis作为缓存
    Python RESTful 接口开发01
    teamview
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11354836.html
Copyright © 2020-2023  润新知