记录下几个遇到的bug

1,dao层参数必须加 @Param

  java没有保存行参的记录,java在运行的时候会把List  queryAll(int offset,int limit);中的参数变成这样:queryAll(int arg0,int arg1),这样我们就没有办法去传递多个参数,需要在 dao 层使用 @Param 注解给方法参数命名,然后在 xml 文件的该 dao 层方法对应的 sql 语句中就可以正常使用 @Param 注解的参数名。  https://blog.csdn.net/baidu_26954625/article/details/90511656

2,

SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer); 

第一种方法:

如果你的API为Restful 方式的可以在Client接口参数中加注解@PathVariable

@FeignClient(name = "PRODUCT")
@Component
public interface ProductClient {
    @PostMapping("/product/getMsgByGet/{a}")
    String getMsg(@PathVariable("a") String a);
}

第二种方法:

不是Restful形式的API 在Client接口参数加注解@ReuqstParam

@FeignClient(name = "PRODUCT")
@Component
public interface ProductClient {
    @PostMapping("/product/getMsgByGet")
    String getMsg(@RequestParam String a);
}

https://blog.csdn.net/weixin_30633949/article/details/96037677?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduend~default-1-96037677.nonecase&utm_term=feign%E8%B0%83%E7%94%A8%E6%8E%A5%E5%8F%A3%E5%8F%82%E6%95%B0%E5%8F%AF%E4%BB%A5%E4%B8%BAnull%E5%90%97&spm=1000.2123.3001.4430

3,Feign 解决 Get 请求自动转化成 POST 的问题

  明明Feign发送的是Get请求,到了提供者这边却变成了Post,因为Feign使用默认的连接工具实现类,所以里面发现只要你有body体对象,就会强制的把GET请求转换成POST请求。

  所以解决办法是在调用者这边,更换Apache的HttpClient。使get请求变成post请求,覆盖项目默认的实现。从而达到目的。

  1)加入Feign的配置项
    feign:
      httpclient:
        enabled: true
  2)加入这两个依赖
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.9</version>
    </dependency>
    <dependency>
      <groupId>io.github.openfeign</groupId>
      <artifactId>feign-httpclient</artifactId>
      <version>10.2.3</version>
    </dependency>

4,feign调用如果传递的参数为空,服务提供者这边参数需要加上required = false ,比如: @RequestParam(value = "resourceId",required = false) String resourceId

原文地址:https://www.cnblogs.com/moxiaodan/p/13777342.html