
# 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();   
  }
  ```
  
 
