zoukankan      html  css  js  c++  java
  • AOP

    AOP术语

    1.target:目标类,需要被代理的类。例如:UserService

    2.Joinpoint(连接点):所谓连接点是指那些可能被拦截到的方法。例如:所有的方法

    3.PointCut 切入点:已经被增强的连接点。例如:addUser()

    4.advice 通知/增强,增强代码。例如:afterbefore

    5. Weaving(织入):是指把增强advice应用到目标对象target来创建新的代理对象proxy的过程.

    6.proxy 代理类

    7. Aspect(切面): 是切入点pointcut和通知advice的结合

    一个线是一个特殊的面。

    一个切入点和一个通知,组成成一个特殊的面。

     

    切入点表达式

    1.execution()  用于描述方法 【掌握】

    语法:execution(修饰符  返回值  包..方法名(参数) throws异常)

    修饰符,一般省略

    public 公共方法

    * 任意

    返回值,不能省略

    void 返回没有值

    String 返回值字符串

    * 任意

    包,[省略]

    com.itheima.crm 固定包

    com.itheima.crm.*.service crm包下面子包任意 (例如:com.itheima.crm.staff.service

    com.itheima.crm.. crm包下面的所有子包(含自己)

    com.itheima.crm.*.service.. crm包下面任意子包,固定目录serviceservice目录任意包

    类,[省略]

    UserServiceImpl 指定类

    *Impl Impl结尾

    User* User开头

    * 任意

    方法名,不能省略

    addUser 固定方法

    add* add开头

    *Do Do结尾

    * 任意

    (参数)

    () 无参

    (int) 一个整型

    (int ,int) 两个

    (..) 参数任意

    throws ,可省略,一般不写。 

    execution(* com.itheima.crm.*.service..*.*(..))

     aspectj 通知类型,只定义类型名称。已经方法格式。

    l个数:6种,知道5种,掌握1中。

    before:前置通知(应用:各种校验)

    在方法执行前执行,如果通知抛出异常,阻止方法运行

    afterReturning:后置通知(应用:常规数据处理)

    方法正常返回后执行,如果方法中抛出异常,通知无法执行

    必须在方法执行后才执行,所以可以获得方法的返回值。

    around:环绕通知(应用:十分强大,可以做任何事情)

    方法执行前后分别执行,可以阻止方法的执行

    必须手动执行目标方法

    afterThrowing:抛出异常通知(应用:包装异常信息)

    方法抛出异常后执行,如果方法没有抛出异常,无法执行

    after:最终通知(应用:清理现场)

    方法执行完毕后执行,无论方法中是否出现异常

    环绕
    
    try{
         //前置:before
        //手动执行目标方法
        //后置:afterRetruning
    } catch(){
        //抛出异常 afterThrowing
    } finally{
        //最终 after
    }
    

      

  • 相关阅读:
    再谈反射
    XmlElement和XmlNode的区别
    几个常用的集合类的使用
    node.js 练习3 调用函数
    ioc 的好文章 转自 GavinJun
    sqlserver 使用小技巧总结
    node.js 练习2 (调用函数)
    c# 面向对象基础
    linq 和 lmabda 表达式 的用法 和优劣 转自 农码一生
    memcache 基本操作
  • 原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/11263650.html
Copyright © 2011-2022 走看看