java AOP 之 AspectJ
java AOP 之 AspectJ
yan5845hao 发表于11个月前
java AOP 之 AspectJ
  • 发表于 11个月前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

  • 切点语法(pointcut)
方法执行:execution(MethodSignature)
办法调用:call(MethodSignature)
结构器施行:execution(ConstructorSignature)
构制器挪用:call(ConstructorSignature)
类始初化:staticinitialization(TypeSignature)
属性读操作:get(FieldSignature)
属性写操纵:set(FieldSignature)
破例处置施行:handler(TypeSignature)
工具始初化:initialization(ConstructorSignature)
工具事后始初化:preinitialization(ConstructorSignature)
Advice执行:adviceexecution()
pointcut 方法名称([参数]) : call|execution|staticinitialization(* 匹配到方法([参数类型]));
pointcut test(String name) : call(* com.uwo.test.HelloWord.hello(String));
  • 五种通知(曾强)
before 目标方法执行前执行,前置通知
after 目标方法执行后执行,后置通知
after returning 目标方法返回时执行 ,后置返回通知
after throwing 目标方法抛出异常时执行 异常通知
around 在目标函数执行中执行,可控制目标函数是否执行,环绕通知
  • 前置通知语法
before([参数]) : 切点方法名称([参数]) {
    /// 处理过程
}
before(String name) : test(name) {
    System.out.println("before " + name);
}
  • 后置返回通知语法
after([参数]) returning ([返回值]) : 切点方法名称([参数]) {
    /// 处理过程
}
after(String name) returning (String value) : test(name) {
    System.out.println("after returning paramName = " + name + "; resultValue = " + value);
}
  • 异常通知语法
after([参数]) throwing (异常类) : 切点方法名称([参数]) {
    /// 处理过程
}
after(String name) throwing (java.lang.Exception e) : test(name) {
    System.out.println("after throwing paramName = " + name + "; Exception = " + e.getMessage());
}
  • 后置通知语法
after([参数]) : 切点方法名称([参数]) {
    /// 处理过程
}
after(String name) : test(name) {
    System.out.println("after " + name);
}
  • 环绕通知语法 around 无法与 (before,after)同时存在
返回类型 around([参数]) : 切点方法名称([参数]) {
    /// 处理过程
    return 值;
}
String around(String name) : test(name) {
    System.out.println("[around === start]");
    String value = proceed(name);
    System.out.println("[around === end]");
    return value;
}
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 6
博文 102
码字总数 20669
×
yan5845hao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: