zoukankan      html  css  js  c++  java
  • 第一章 AOP

    关于AOP,通常我们会使用AspectJ注解来做,共有6中切面

    • 前置:@Before
    • 后置:@After
    • 返回值:@AfterReturing
    • 异常:@AfterThrowing
    • 环绕:@Around:可以理解为以上四种的集合
    • 引用(不常用)

    比较难理解的两个部分:

    • 连接点:JoinPoint、ProceedJoinPoint
      • 连接点其实就是切面表达式覆盖的方法,根据该连接点可以获取多个信息,常用的如下:
        • getSignature():获取当前方法的返回值、全类名、参数类型,例:Shop com.xxx.firstboot.dao.ShopDao.getShop(int)
        • getTarget():获取当前方法所属的类实例,例:com.xxx.firstboot.dao.ShopDao@72f97c4f
        • getArgs():获取当前方法的参数,例:[Ljava.lang.Object;@6fbd538a
      • JoinPoint习惯性的用在除了@Around中,ProceedJoinPoint习惯性的用在@Around中(因为需要使用ProceedJoinPoint的proceed()方法进行目标方法的执行)
    • 切点表达式:
      • execution(* com.xxx.firstboot.dao.*.*(..))只需要记住这一个就可以
        • 第一个*:代表任意权限和返回类型,例:public Shop,如果需要明确指定,就指定
        • 第二个*:代表这个包下的所有类,例:ShopDao,如果需要明确指定,就指定
        • 第三个*:代表类下的所有方法,例:getShop,如果需要明确指定,就指定
        • ..:代表方法的入参类型可以是任意类型、任意数量(包括0个)的,例:int,如果需要明确指定,就指定
      • 切点表达式就是方法(连接点)的匹配表达式

    两个补充点:

      • 多个切面可以通过@Order(数字)这个注解来制定织入顺序,例:@Order(1),数字越小,越先织入,该注解用在切面上(即切面类上)
      • 切点表达式可以重用,如下会演示

    from: https://www.cnblogs.com/java-zhao/p/5415893.html

  • 相关阅读:
    奔溃瞬间1
    面试知识点blog汇总
    贪心
    树 和 图
    DFS 和 BFS
    STL
    哈希表
    手写堆
    并查集
    二项式反演学习笔记
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/10187831.html
Copyright © 2011-2022 走看看