2018-6-13-采坑日记

Posted gavincoder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-6-13-采坑日记相关的知识,希望对你有一定的参考价值。

SpringMVC:

1、良好开发习惯:SpringCloud框架下微服务之间的相互调用,可以先在Eureka上测试swagger接口,再在本地调用测试。

  --->SpringCloud项目在yml文件中配置Eureka 地址,可以查看Swagger UI 。

2、字段的描述定义,可以查看对应数据库表字段定义描述。

3、可以借助https://www.bejson.com/进行json数据格式校验。

4、坑:sql查询语句 没有指定入参类型parameterType(没有入参),导致查询条件失效,造成全表查找。

常见bug:

2018-06-05 20:42:58.925 ERROR [http-nio-48233-exec-3] .s.i.CustomerServiceImpl [ 143]: getCustomerDetail error:nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 4.

   --->条件查询结果0-1个,全表查询4个。

良好习惯:select语句 加上入参(parameterType)和出参(resultMap)类型。

5、相同类型的变量才能相互赋值。

  ---->实际上是全限定类名相同。(同包下相同类)

eg:

com.test.ccs.user.dao.entity.CustomerPo 

com.test.xxl.ccs.user.dao.entity.CustomerPo
不能相互赋值

典例:
entity bean 转换成service bean

 6、Java对象之间相互转换,必须借助“工具方法”,不能像基本方法那样强制转换。

eg:

//对象转换
BeanUtils.copyProperties(addUserInfoBo, userInfoForm);

 7、强行转型的前提,保证非空,避免空指针异常。

eg:

if(!StringUtils.isEmpty(registerInfo.getData(JSONObject.class).get("msspId"))){
  String msspId = (String) registerInfo.getData(JSONObject.class).get("msspId"); 
}

 

 8、打印日志是写代码的基本技能

  --->通常会打印 方法的入参和出参。

eg:

对象参数打印:
        if(registerInfo != null){
             logger.info("registerInfo==========:{}",JsonUtils.toJsonString(registerInfo));
         }

    logger.info("/approvalCustomer/resultBo==5=={}",resultBo.toString());

    --->必须重写toString()方法。

    eg:
      public String toString() {
        return JsonUtils.toJsonString(this);
      }

打日志调试代码常用流程:
  • 详细给接口入参出参打日志;
  • 看日志:入参有问题,则报错:
  • --->追踪页面传递的参数
  • --->追踪页面调的接口(查看页面调用的接口)
  • --->追踪接口查的的数据库(或者调的接口)
  • --->最后查看数据库数据,逐层追踪。

 

 9、restful接口前后端http传递方法保持一致,不一致可能会造成乱码

eg:

前端 GET方式,

后端POST方式,
@RequestMapping(value = "/test/web/register",method = RequestMethod.POST)
造成乱码现象,无法成功传递数据。

 

 10、Eureka Swagger Ui使用

  <1> 开发集成环境:本地启动服务(或者部署到开发环境服务器),开发环境Eureka 发现本地服务,可以在Swagger Ui传参测试,同时可以本地与前端debug联调。
  <2>测试环境:代码部署到测试环境启动服务,测试环境Eureka 发现服务,可以在Swagger Ui传参测试服务接口,一般测试人员常用。
    --->一般应用服务器与Eureka服务器分离,应用服务器与Eureka服务器都考虑负载均衡,通过负载均衡机访问Eureka服务器。

 
















以上是关于2018-6-13-采坑日记的主要内容,如果未能解决你的问题,请参考以下文章

DolphinScheduler搭建与采坑日记

Nginx采坑日记(后台响应ResponseEntity时,Nginx将部分数据过滤)

thymeleaf 采坑

ObjectMapper采坑记及源码分析

Laravel 采坑

UEditor采坑指南