zoukankan      html  css  js  c++  java
  • 基于AspectJ自定义注解

     1 package com.aspectj.demo.aspect;
     2 
     3 import java.lang.annotation.ElementType;
     4 import java.lang.annotation.Retention;
     5 import java.lang.annotation.RetentionPolicy;
     6 import java.lang.annotation.Target;
     7 
     8 @Retention(RetentionPolicy.RUNTIME)
     9 @Target(ElementType.METHOD)
    10 public @interface MonitorMethod {
    11     String value() default "";
    12 }
     1 package com.aspectj.demo.aspect;
     2 
     3 import java.lang.reflect.Method;
     4 
     5 import org.aspectj.lang.ProceedingJoinPoint;
     6 import org.aspectj.lang.annotation.Around;
     7 import org.aspectj.lang.annotation.Aspect;
     8 
     9 @Aspect
    10 public class MethodExecutionTime {
    11 
    12 //    @Around("execution(* *.*(..)) && @annotation(com.aspectj.demo.aspect.MonitorMethod)")
    13     @Around("execution(* *.*(..)) && @annotation(method)")
    14     public Object profile(ProceedingJoinPoint pjd,MonitorMethod method) throws Throwable {        
    15         Object result = null;
    16         System.out.println(method.value());
    17         // 这里可以获取方法名
    18         System.out.println(pjd.getSignature().getName());
    19         System.out.println(pjd.getTarget());
    20         // 获取方法名
    21         Method[] methods = pjd.getSignature().getDeclaringType().getMethods();
    22         System.out.println(methods[0]);
    23 
    24         // 获取参数信息
    25         Object[] args = pjd.getArgs();
    26         for (Object o : args) {
    27             System.out.println(o.toString());
    28         }
    29         try {
    30             // System.out.println("前置通知");
    31             result = pjd.proceed();
    32             // System.out.println("后置通知");
    33         } catch (Throwable e) {
    34             // System.out.println("异常通知");
    35         }
    36         // System.out.println("返回通知");
    37         return result;
    38     }
    39 }
     1 package com.aspectj.demo.aspect;
     2 
     3 public class StockService {
     4 
     5     @MonitorMethod(value="1111111111")
     6     public String getBaseInfo(String a) {
     7         try {
     8             Thread.sleep(500);
     9         } catch (InterruptedException e) {
    10             e.printStackTrace();
    11         }
    12         return "";
    13     }
    14 }

    有追求,才有动力!

    向每一个软件工程师致敬!

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    异常:调用链顺序
    日志分割建议
    java异常处理规范
    忽略字母大小写情况下统计字符出现的次数
    十六进制转化为十进制
    搜索(剪枝优化):HDU 5113 Black And White
    水题:HDU 5112 A Curious Matt
    综合(奇技淫巧):HDU 5118 GRE Words Once More!
    网络流(费用流)CodeForces 321B:Ciel and Duel
    数学(概率)CodeForces 626D:Jerry's Protest
  • 原文地址:https://www.cnblogs.com/wujf/p/5363209.html
Copyright © 2011-2022 走看看