0708版本spring boot, spring cloud升级改造
- 版本升级情况
·
o Parent pom: 1.0.3 -> 1.0.4
o Spring Boot Version: 1.5.7.RELEASE ->2.1.6.RELEASE
o Spring Cloud Version: Edgware.RC1 ->Greenwich.SR2
o Spring Version: 4.3.11.RELEASE -> 5.1.8.RELEASE
2. 类引用变更
升级前 | 升级后 |
org.apache.commons.lang.StringUtils | org.apache.commons.lang3.StringUtils |
org.springframework.cloud.netflix.feign.FeignClient | org.springframework.cloud.openfeign.FeignClient |
org.springframework.boot.autoconfigure.web.HttpMessageConverters | org.springframework.boot.autoconfigure.http.HttpMessageConverters |
org.springframework.cloud.netflix.feign.support.ResponseEntityDecoder | org.springframework.cloud.openfeign.support.ResponseEntityDecoder |
org.springframework.cloud.netflix.feign.support.SpringDecoder | org.springframework.cloud.openfeign.support.SpringDecoder |
org.apache.commons.lang.builder.ToStringBuilder | org.apache.commons.lang3.builder.ToStringBuilder |
com.netflix.loadbalancer.Server | net.sf.jsqlparser.schema.Server |
3. 升级时需注意
- 相关的所有依赖的pom文件父版本(parent version)需升级为最新parent version(1.0.4)
- 按照依赖关系进行改造:
如Dict应用关联依赖关系为:toolbox -> share ->dict-share ->dict,则依次处理toolbox, share, dict-share, dict模块。
4. 问题汇总:
·
升级前:
@Bean
public CacheManagercacheManager(RedisTemplateredisTemplate) {
RedisCacheManagercacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setDefaultExpiration(defaultExpireTime);
return cacheManager;
}
升级后:
@Bean
public CacheManagercacheManager(RedisConnectionFactoryredisConnectionFactory) {
//初始化一个RedisCacheWriter
RedisCacheWriterredisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
//设置CacheManager的值序列化方式为json序列化
RedisSerializerjsonSerializer = new GenericJackson2JsonRedisSerializer();RedisSerializationContext.SerializationPairpair = RedisSerializationContext.SerializationPair
.fromSerializer(jsonSerializer);
RedisCacheConfigurationdefaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig()
.serializeValuesWith(pair);
//设置默认超过期时间
defaultCacheConfig.entryTtl(Duration.ofSeconds(defaultExpireTime));
//初始化RedisCacheManager
return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
}
解决办法,引入spring-cloud-starter-netflix-ribbon依赖:
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
2.1.2.RELEASE
可能原因:服务配置了降级策略。
解决办法:配置降级策略后,@FeignClient注解的类上不要再使用@RequestMapping注解,可在实现类上使用。
解决办法:bootstrap.yml增加配置:spring.main.allow-bean-definition-overriding=true
解决该问题,具体原因见:网络资料
示例如下:
spring boot 1.x
spring:
http:
multipart:
max-file-size: 10Mb
max-request-size: 50Mb
spring boot 2.x
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 50MB