文章目录
前言
记录下 自己开发中遇到的 印象深刻 被迫加班的bug,也防止面试时被问到!
一、Feign调用服务时,get请求参数异常?
Q:
@Fegin get调用暴露的服务接口时候,请求参数为对象类型, 接收到参数始终都是post请求!!!
原因:
检查feign调用方式与服务端所声明的方式一致,但是为什么为会变成Post请求呢?翻看源码,发现feign默认的远程调用使用的是jdk底层的HttpURLConnection,这在feign-core包下的Client接口中的convertAndSend方法可看到
if (this.method.equals("GET")) {
this.method = "POST";
}
解决:
服务暴露的feign接口,如果是多参数,都用POST吧,简单粗暴。
get请求,将参数换成一个一个的属性。
或者在@RequestMapping注解中加入consumes的属性。
二、多数据源的时候,mybatsiPlus的分页失效?
Q:
开发中使用多数据源的时候,mybatisPlus的分页插件失效!
解决: 注释部分
//解决扫包的时候无法扫描mybatis-plus的mapper的问题。
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
MybatisConfiguration mybatisConfiguration = new MybatisConfiguration();
mybatisConfiguration.addInterceptor(new PaginationInterceptor());
// 重点 不可少
bean.setConfiguration(mybatisConfiguration);
bean.setDataSource(ds1);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/ds1/**/*.xml") );
return bean.getObject();
三、springBoot项目中maven引入的包不生效?
Q:
maven引入的包,代码扫描不到
解决
加入@ComponentScan,设置扫描路径
四、Reids master间断性暂停服务?
Q:
Redis master 主线程阻塞,间断性暂停服务?
原因:
Redis 集群模式, master 设置了内存快照。如果 Master 写内存快照,save 命令调度 rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性
暂停服务
解决:
取消master的内存快照设置。