Spring Boot 2.0升级初记
Spring Boot 2.0升级小记
2.3 重写
1. 背景
项目原先的
Spring Boot
版本为1.5.4.RELEASE
,Spring Cloud
版本为Dalston.SR2
,升级后的Spring Boot
版本为2.0.0.M7
,Spring Cloud
版本为Finchley.M5
,因版本升级导致各组件API以及依赖包发生变化,下面是项目中用到的组件的升级方法。
2. Spring Security
项目使用
Oauth2
协议规范,认证的Token
令牌使用Redis
进行存储。
2.1 授权服务器(authorization server)
- 客户端配置的密码由原先的明文修改为密文。
@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");
}
}
2.2 资源服务器(resource server)
-
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);
3. ElasticSearch
由于项目部署在阿里云上,而阿里云推荐使用
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
4. Spring Cloud Feign
项目使用
Feign
作为Rest
客户端进行远程调用,Spring Cloud
版本升级后,Feign
依赖变更为:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
5. log4j
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/