更新时间:2022-09-27 GMT+08:00

Spring boot从 2.0.x.RELEASE升级到2.3.x.RELEASE兼容性问题

FeignClient名问题

  • 问题描述

    老版本的Spring Boot允许bean重名覆盖,新版本默认不允许,需要通过配置项启用。

  • 解决方案

    增加配置:

    spring:
      main:    
        allow-bean-definition-overriding: true

Spring Data接口变更

  • 问题描述

    Spring Data接口经常发生变更。

  • 解决方案

    使用新的接口修改代码,一般都有替换方案。例如new PageImpl修改为PageRequest.of,new Sort修改为Sort.of。

JPA变更:多个Entity对应一个表

  • 问题描述

    新版本要求一个Entity只能够对应一个表。

  • 解决方案

    目前还没有简单方案,只能够一个表对应一个Entity,根据新版本的约束调整代码结构。

Mongo client升级变更

  • 问题描述

    MongoDbFactory的接口存在变更,需要调整为新版本的用法。

  • 解决方案
    @Bean
    public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context, BeanFactory beanFactory) {
       DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
       MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);
       mappingConverter.setCustomConversions(beanFactory.getBean(MongoCustomConversions.class));
       // other customization
       return mappingConverter;
    }
    
    @Bean
    public MongoClientOptions mongoOptions() {
           return MongoClientOptions.builder().maxConnectionIdleTime(60000).socketTimeout(60000).build();   
    }