Spring Boot 2.0升级小记
程序员文章站
2022-03-01 13:47:40
...
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>
推荐阅读
-
使用 Spring Boot 2.0 + WebFlux 实现 RESTful API功能
-
spring boot2.0实现优雅停机的方法
-
Java Spring boot 2.0 跨域问题的解决
-
Spring Boot 2.0 设置网站默认首页的实现代码
-
Spring Boot 2.0 设置网站默认首页的实现代码
-
Spring Boot 1.5.* 升级 2.1 - 完善中
-
spring boot 2.0 整合 elasticsearch NoNodeAvailableException
-
spring boot 2.0 源码分析(四)
-
Spring Boot 2.0 升级指南
-
spring boot 2.0 Feign的客户端