SpringCloud项目:SpringBoot1.5.9升级SpringBoot2.0.6踩坑日记

1.依赖变更

升级前:


org.springframework.cloud
spring-cloud-starter-eureka


org.springframework.cloud
spring-cloud-starter-zuul


org.springframework.cloud
spring-cloud-starter-feign


org.springframework.cloud
spring-cloud-starter-hystrix


org.springframework.cloud
spring-cloud-starter-eureka-server


org.springframework.security.oauth
spring-security-oauth2


org.springframework.security
spring-security-jwt

升级后:


org.springframework.cloud
spring-cloud-starter-netflix-eureka-client


org.springframework.cloud
spring-cloud-starter-netflix-zuul


org.springframework.cloud
spring-cloud-starter-openfeign


org.springframework.cloud
spring-cloud-starter-netflix-hystrix


org.springframework.cloud
spring-cloud-starter-netflix-eureka-server


org.springframework.cloud
spring-cloud-starter-oauth2


org.springframework.cloud
spring-cloud-starter-security

2.配置变更

升级前:

获取客户端IP

${spring.cloud.client.ipAddress}

security用户名和密码配置

security:
user:
name:
password:

升级后:

获取客户端IP

${spring.cloud.client.ip-address}

security用户名和密码配置

spring:
security:
user:
name:
password:

3.imports package变更

import org.springframework.boot.web.support.SpringBootServletInitializer;
//升级后:
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

import org.springframework.cloud.netflix.feign.EnableFeignClients;
//升级后:
import org.springframework.cloud.openfeign.EnableFeignClients;

import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
//升级后:
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
//升级后:
import org.springframework.boot.jdbc.DataSourceBuilder;

import org.springframework.data.querydsl.QueryDslPredicateExecutor;
//升级后:
import org.springframework.data.querydsl.QuerydslPredicateExecutor;

import org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor;
//升级后:
import org.springframework.ws.soap.security.wss4j2.Wss4jSecurityInterceptor;

4.踩过的坑

springboot2.0中默认web容器换了,由AnnotationConfigEmbeddedWebApplicationContext 改为 AnnotationConfigServletWebServerApplicationContext。

org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;

缓存管理器升级前:

/**
* 缓存管理器.
*
* @param redisTemplate
* @return
*/
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
// 设置缓存默认过期时间30分钟(全局的)
cacheManager.setDefaultExpiration(defaultExpireTime);
return cacheManager;
}

升级后:

/**
* 缓存管理器
* @param redisConnectionFactory
* @return
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
// 设置缓存默认过期时间30分钟(全局的)
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(defaultExpireTime));
return RedisCacheManager
.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
.cacheDefaults(redisCacheConfiguration).build();
}

升级后原来的构造方法已经没有了,改成用builder建造模式,它有一个RedisCacheManagerBuilder的内部类;RedisCacheConfiguration是用来初始化配置的,这里只设置了过期时间,如需要配置其他可以看一下这个类。

如果项目中用到Mongodb,配置类也有一点小改动:

升级前:

public AbstractMongoConfiguration() {
}

protected abstract String getDatabaseName();

/** @deprecated */
@Deprecated
protected String getAuthenticationDatabaseName() {
return null;
}

public abstract Mongo mongo() throws Exception;

@Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(this.mongoDbFactory(), this.mappingMongoConverter());
}

@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(this.mongo(), this.getDatabaseName(), this.getUserCredentials(), this.getAuthenticationDatabaseName());
}

升级后:

public AbstractMongoConfiguration() {
}

public abstract MongoClient mongoClient();

@Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(this.mongoDbFactory(), this.mappingMongoConverter());
}

@Bean
public MongoDbFactory mongoDbFactory() {
return new SimpleMongoDbFactory(this.mongoClient(), this.getDatabaseName());
}


posted @ 2020-11-16 10:56  Conwie  阅读(641)  评论(0)    收藏  举报