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操作。