invoke 使代码更加结构清晰

下面的代码是工作中根据自己想法写的,或许有缺陷未知但不失为一种风格,记录下来:

 

// 这是从request中获取Url的固定参数
private final static String URL_MAPPING = HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE;
// url和方法的对应关系
public static Map<String,String> urlMthod = new HashMap<String,String>();
static {
urlMthod.put("/user/add.xhtm", "add");

}

// 下面为方法中转器,即每个aop都走到这个方法中,通过切面参数寻找它对应的业务方法。

public void dataStatisticBefore(JoinPoint joinPoint) {
  Long currentTime = System.currentTimeMillis();
  Object[] objects = joinPoint.getArgs(); 
  for(Object object : objects ) {
    if(object instanceof HttpServletRequest) {
      HttpServletRequest sr = (HttpServletRequest) object;
      String url = (String) sr.getAttribute((URL_MAPPING));
      String methodName = urlMthod.get(url);// 获取方法名
      try {
        this.getClass()
          .getMethod(
          methodName,new Class[] { String.class,HttpServletRequest.class,Long.class,String.class})
          .invoke(this, new Object[] {url,sr,currentTime,methodName});// 通过方法名转到具体处理
      } catch (Exception e) {
        logDataStatistic.error("aop dataStatistic_Around : " + url + " error :", e);
      }
    break;
    }
  }
}

 // 具体处理方法

public void add(...) {

}

 

 

 

转载于:https://www.cnblogs.com/codermaster/p/4210630.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值