AOP基本概念 Spring

Spring,AOP基本概念,博智网带你了解详细信息 。
目录

  • 举个栗子给大家讲一下代理:
  • 什么是AOP?
    • 基本术语
      • (1)切面(Aspect)
      • (2) 目标对象(Target)
      • (3) 连接点(JoinPoint)
      • (4) 切入点(PointCut)
      • (5) 通知(Advice)
      • (6) 织入(Weaving)
    • 静态代理模式
      • 动态代理模式
      • 总结

        举个栗子给大家讲一下代理:我相信大家都知道明星吧 。
        大部分明星是都有经纪人的 。
        假如我们是一个大厂,现在想要找一个明星代理产品,那我们会直接找到明星吗?不 。现实中,你大部分找到的都是找到明星的代理人(经纪人) 。经纪人通过和你约谈,了解产品,看自己的家明星,是否可以接下这个广告 。觉得可以,就会和你商量签订合同、商谈活动日期、排练等等 。虽然商家知道自己并没有找到明星,但是他却知道这件事情已经成了 。
        1、在这个流程中,商家找了明星的经纪人 。但是却完成了最初的任务 。
        2、明星经纪人 帮明星签订合同、订下活动日期等等 。
        3、明星专注于拍广告 。
        这个时候我们是不是就可以讲 明星经纪人增强了明星的功能勒?
        什么是AOP?与OOP对比,AOP是处理一些横切行问题 。这些横切性问题不会影响到主逻辑的实现,但是会散落到代码的各个部分,难以维护 。AOP就是把这些问题和主业务逻辑分开,达到与主业务逻辑解耦的目的 。
        AOP基本概念 Spring

        文章插图
        AOP基本概念 Spring

        文章插图
        AOP基本概念 Spring

        文章插图

        基本术语
        (1)切面(Aspect)跨越多个类的关注点的模块化 。事务管理是Java 应用程序中横切关注点的一个很好的例子 。在 Spring AOP 中,方面是通过使用常规类(基于模式的方法)或使用@Aspect注解注解的常规类 (@AspectJ 风格)实现的 。
        切面是一个横切关注点的模块化,一个切面能够包含同一个类型的不同增强方法,比如说事务处理和日志处理可以理解为两个切面 。切面由切入点和通知组成,它既包含了横切逻辑的定义,也包括了切入点的定义 。Spring AOP就是负责实施切面的框架,它将切面所定义的横切逻辑织入到切面所指定的连接点中 。
        可以简单地认为, 使用 @Aspect 注解的类就是切面
        (2) 目标对象(Target)目标对象指将要被增强的对象,即包含主业务逻辑的类对象 。或者说是被一个或者多个切面所通知的对象 。
        【AOP基本概念 Spring】
        (3) 连接点(JoinPoint)程序执行过程中明确的点,如方法的调用或特定的异常被抛出 。连接点由两个信息确定:
        • 方法(表示程序执行点,即在哪个目标方法)
        • 相对点(表示方位,即目标方法的什么位置,比如调用前,后等)
        简单来说,连接点就是被拦截到的程序执行点,因为Spring只支持方法类型的连接点,所以在Spring中连接点就是被拦截到的方法 。
        讲人话 就是spring允许你使用通知的地方
        (4) 切入点(PointCut)上面说的连接点的基础上,来定义切入点,你的一个类里,有15个方法,那就有几十个连接点了对把,但是你并不想在所有方法附近都使用通知(使用叫织入,以后再说),你只想让其中的几个,在调用这几个方法之前,之后或者抛出异常时干点什么,那么就用切点来定义这几个方法,让切点来筛选连接点,选中那几个你想要的方法 。
        @Pointcut("execution(* com.remcarpediem.test.aop.service..*(..))")public void pointcut() {}
        上边切入点的匹配规则是com.remcarpediem.test.aop.service包下的所有类的所有函数 。
        (5) 通知(Advice)Spring AOP 包括以下类型的通知: