2018-6-1-采坑日记

Posted 马非白即黑

tags:

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

SpringMVC:

1、查看方法的入参、出参说明,可以借助Swagger UI。

  --->尤其是查看请求入参中是否需要token。

2、查找Controller中方法,使用接口URL搜索更加高效。

3、常见服务响应类型

public ServiceResponse<Map<String,String>> register(CustomerInfoBo customerInfo){
    try{
        if(customerInfo == null){
            return ServiceResponse.error("The register is error.");
        }else{
            Map<String,String> map =  registerService.register(customerInfo);
            return ServiceResponse.success(map);
            }    
        }catch(BusinessServiceException e){
            logger.error("The register is error.", e);
            return ServiceResponse.error(e.getMessage());
        }
    }

---> sccess与error方法入参类型可以定义不同,但是保证方法返回类型相同。

 4、console中异常信息是以堆栈形式提示。相互依赖的错误也是依赖提示。

--->上面(前面)是上层应用的错误,下面(后面)是底层方法实现的错误,因此通过定位后面的错误,分析解决问题。

eg:

Error creating bean with name ‘CustomerController‘: Unsatisfied dependency expressed through field ‘registerCustomerService‘; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘fRegisterCustomerServiceImpl‘: Unsatisfied dependency expressed through field ‘tpsServiceClient‘; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘com.ton.remote.client.TpsServiceClient‘: FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

5、Controller方法入参注解细节:

@RequestParam()最好为参数命名,避免不必要的错误,且一个方法可以有多个RequestParm参数注解。

 eg:(@RequestParam(name="lid",defaultValue="ste") String id)

   ( @RequestParam("name") String name, @RequestParam("idType") String idType)

未命名报错:java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

@RequestBody:针对对象参数,且一个方法只能有一个RequestBody参数。

eg:正确:(@RequestBody String name)

  错误:(@RequestBody String name, @RequestBody String idType)

多个RequestBody参数报错: nested exception is java.lang.IllegalStateException: Method has too many Body parameters: 

6、常见接口问题:后台接口逻辑正常,功能无效。

  --->可能由于前端请求参数错误

    eg:前端没有传递筛选条件,导致查询接口返回未经删选的数据。

7、kafka:(消息中间件)  

  --->一方:广播主题,可能多个;另一方:监听约定好的主题,根据主题确定传送数据存在哪里(eg:存在redis里)

 8、常见"JSON对象"类型数据,获取某字段数值。

    public <V> V getData(Class<V> clazz) {
        Object v = null;
        if (this.data != null) {
            if (this.data instanceof JSONObject) {
                v = ((JSONObject) this.data).toJavaObject(clazz);
            } else {
                v = JsonUtils.toObject(JsonUtils.toJsonString(this.data), clazz);
            }
        }
        return v;
    }
方法调用: registerInfo.getData(JSONObject.
class).get("msspId");

备注:(Class<V> clazz),表明方法入参为传入类型的Class对象

 

SVN:

1、常见SVN提交代码流程:

  • 远端提供授权
  • 本地只查看有修改的文件(文件有黑星标记)--->team/更新-拉取最新代码解决冲突--->team/提交(添加授权标识号)

 备注:Git/Subversion一般都是在管理修改的代码,因此通常我们只需要针对有修改文件进行Git/Subversion操作。

 

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

DolphinScheduler搭建与采坑日记

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

thymeleaf 采坑

ObjectMapper采坑记及源码分析

Laravel 采坑

UEditor采坑指南