Java 开发中遇到的印象深刻的问题

文章目录

  • 前言
  • 一、Feign调用服务时,get请求参数异常?
  • 二、多数据源的时候,mybatsiPlus的分页失效?
  • 三、springBoot项目中maven引入的包不生效?
  • 四、Reids master间断性暂停服务?


前言

记录下 自己开发中遇到的 印象深刻 被迫加班的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,设置扫描路径
Java 开发中遇到的印象深刻的问题_第1张图片

四、Reids master间断性暂停服务?

Q:

Redis master 主线程阻塞,间断性暂停服务?

原因:

Redis 集群模式, master 设置了内存快照。如果 Master 写内存快照,save 命令调度 rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性
暂停服务

解决:

取消master的内存快照设置。

你可能感兴趣的:(java开发笔记,java)