Java初级程序员编码规范——Controller

目录

1. Controller层的编码规范

   1.1  包括在上一篇博文(接口编码规范)提到的规范内容

   1.2 所有函数返回统一的ResultBean格式

   1.3  ResultBean是Controller专用的,是不允许往后传

   1.4 Controller做参数格式化的转换,不允许把json,map这类对象传到service去,也不允许services返回json,map

  1.5 不需要打印日志

2. AOP实现

      2.1  ControllerAOP代码实现

 2.2 AOP配置

2.3 controller测试代码


1. Controller层的编码规范

   1.1  包括在上一篇博文(接口编码规范)提到的规范内容

 

   1.2 所有函数返回统一的ResultBean格式

 

   1.3  ResultBean是Controller专用的,是不允许往后传

 

   1.4 Controller做参数格式化的转换,不允许把json,map这类对象传到service去,也不允许services返回json,map

              一般情况下写过代码的都知道: map,json这种格式灵活,但是可读性极差。在业务层,存放数据的应该是bean,而不应该是map或者是json等数据格式。对于json一般用于前后端数据的传输。

            切记一点: 业务层处理业务逻辑一定要清晰明了。所以,使用Bean代码能够更加清晰的表示数据。

 

  1.5 不需要打印日志

               日志不要在Controller中打印,要在AOP里面打印日志。建议大部分日志要在Service这层打印。

 

     规范里面大部分是: 不要做的太多,要做的比较少,落地比较容易。

 

2. AOP实现

下面简单介绍以下AOP的实现

      2.1  ControllerAOP代码实现

             在AOP中,主要的工作任务是打印日志和捕获异常。接下来简单写一下ControllerAOP的代码(仅供参考)

/**
 * 处理和包装异常
 */
public class ControllerAOP {
  private static final Logger logger = LoggerFactory.getLogger(ControllerAOP.class);

  public Object handlerControllerMethod(ProceedingJoinPoint pjp) {
    long startTime = System.currentTimeMillis();

    ResultBean result;

    try {
      result = (ResultBean) pjp.proceed();
      logger.info(pjp.getSignature() + "use time:" + (System.currentTimeMillis() - startTime));
    } catch (Throwable e) {
      result = handlerException(pjp, e);
    }

    return result;
  }

  private ResultBean handlerException(ProceedingJoinPoint pjp, Throwable e) {
    ResultBean result = new ResultBean();

    // 已知异常
    if (e instanceof CheckException) {
      result.setMsg(e.getLocalizedMessage());
      result.setCode(ResultBean.FAIL);
    } else if (e instanceof UnloginException) {
      result.setMsg("Unlogin");
      result.setCode(ResultBean.NO_LOGIN);
    } else {
      logger.error(pjp.getSignature() + " error ", e);
      //TODO 未知的异常,应该格外注意,可以发送邮件通知等
      result.setMsg(e.toString());
      result.setCode(ResultBean.FAIL);
    }

    return result;
  }
}

 2.2 AOP配置

         关于使用java代码还是xml配置,推荐使用xml配置,因为这个会不定期的改动


  
  
  
    
      
      
    
  

2.3 controller测试代码

Java初级程序员编码规范——Controller_第1张图片

 

    现在知道为什么要返回统一的一个ResultBean了

  •  为了统一的格式
  • 为了应用AOP
  • 为了包装异常信息

 

通过这两篇博文(接口和controller)的介绍,可以总结出: 先有统一的接口定义规范,然后又AOP实现。先有思想再有技术(这也是符合Spring框架中的AOP的思想)。

你可能感兴趣的:(Java)