项目原先的 Spring Boot
版本为 1.5.4.RELEASE
, Spring Cloud
版本为 Dalston.SR2
,升级后的 Spring Boot
版本为 2.0.0.M7
, Spring Cloud
版本为 Finchley.M5
,因版本升级导致各组件API以及依赖包发生变化,下面是项目中用到的组件的升级方法。
项目使用 Oauth2
协议规范,认证的 Token
令牌使用 Redis
进行存储。
@Configuration @EnableAuthorizationServer public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.inMemory() .withClient("android") .scopes("xx") .secret("$2a$10$sCeoatJoccD4y1ff8AhdROLd2u6AWYBwH7YrbWXxdk6fA4VGhGITm") // 原先的代码:.secret("android") .authorizedGrantTypes("password", "authorization_code", "refresh_token"); } }
Spring Boot 2.0.0.M7
的 autoconfigure
中关于 ResourceServer
的自动配置已被移除,将被移到 Spring Security
项目中,目前的替代方案为使用 https://github.com/spring-projects/spring-security-oauth2-boot.git
,添加如下依赖即可: <dependency> <groupId>org.springframework.security.oauth.boot</groupId> <artifactId>spring-security-oauth2-autoconfigure</artifactId> <version>2.0.0.BUILD-SNAPSHOT</version> </dependency>
2.3 重写 RedisTokenStore
RedisTokenStore
出现的 NoSuchMethodError RedisConnection.set([B[B)V
错误,目前解决方案是重写 RedisTokenStore
第160行 conn.set(accessKey, serializedAccessToken);
修改为 conn.stringCommands().set(accessKey, serializedAccessToken);
由于项目部署在阿里云上,而阿里云推荐使用 REST API
与 ElasticSearch
进行交互,因此项目由原先的 Spring Data Elasticsearch
切换到 Spring Data Jest
作为 ElasticSearch
客户端。
<dependency> <groupId>com.github.vanroy</groupId> <artifactId>spring-boot-starter-data-jest</artifactId> <version>3.0.0.RELEASE</version> </dependency> <dependency> <groupId>io.searchbox</groupId> <artifactId>jest</artifactId> <version>5.3.2</version> </dependency>
spring: data: jest: uri: http://192.168.1.222:9200 username: elastic password: changeme
项目使用 Feign
作为 Rest
客户端进行远程调用, Spring Cloud
版本升级后, Feign
依赖变更为:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
Spring Boot 2.0.0.M7
已将 log4j
依赖移除,而项目中用到的 spring-cloud-stream-binder-kafka
依赖 log4j
,因此需手动添加该依赖:
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
源码地址: http://www.wisely.top/2018/02/28/springboot2-upgrade/