【AOP】(4)切入点表达式

104 阅读1分钟
  • 切入点:匹配 原始方法
  • 切入点表达式:描述 原始方法
    • 接口:

      执行com.xxx包下的BookDao 接口 中的无参数update方法

      execution(void com.itheima.dao.BookDao.update())
      
    • 类:执行com.xxx包下的BookDaoImpl 中的无参数update方法

语法格式

execution(public User com.itheima.dao.BookDao.update(int))

通配符

  • *:单个独立任意符合,可以独立出现,也可以作为前缀或后缀的匹配符出现
    //update*:update开头的方法
    //(*):必有一个参数
    execution(public * com.itheima.*.BookDao.update*(*))
    
  • ..:多个连续的任意符合,可以独立出现,常用语简化包名与参数的书写
    execution(void com..BookDao.update(..))
    
  • +:专用与匹配子类型
    execution(* *..*Service.*(..))
    // * :任意返回值
    // .. :任意包
    // *Service :以Service结尾的
    // .* :任意方法
    // (..) :任意参数
    

书写技巧

  • 方法中,增删改(add/delete/update):精准类型;
  • 查(get):*通配符快速描述
  • 切入点通常描述接口
  • 包名尽量用*不用..
  • UserService => *Service
  • 动词进行精准匹配,名词进行*匹配:getById => getBy*
execution(* com.itheima.*.*Service.find*(..))