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


前言

记录下 自己开发中遇到的 印象深刻 被迫加班的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的内存快照设置。

经验分享 程序员 微信小程序 职场和发展