首页 > 代码库 > invoke 使代码更加结构清晰

invoke 使代码更加结构清晰

不多说,直接贴。

public static Map<String,String> urlMthod = new HashMap<String,String>();
static {
urlMthod.put("/user/add.xhtm", "add");

}

这个方法中转器,就是将每个切进来的方法,指向它要处理的方法中;这样写避免了很多if else的方法,而且结构更加清晰,对于某段的逻辑的修改删除很方便。

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(...) {

}

invoke 使代码更加结构清晰