Spring Boot 2.0升级小记

2018-03-01 07:51:42来源:作者:人点击

分享

1. 背景

项目原先的Spring Boot版本为1.5.4.RELEASESpring Cloud版本为Dalston.SR2,升级后的Spring Boot版本为2.0.0.M7Spring Cloud版本为Finchley.M5,因版本升级导致各组件API以及依赖包发生变化,下面是项目中用到的组件的升级方法。

2. Spring Security

项目使用Oauth2协议规范,认证的Token令牌使用Redis进行存储。

2.1 授权服务器(authorization server)

  • 客户端配置的密码由原先的明文修改为密文。
@Configuration@EnableAuthorizationServerpublic 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.M7autoconfigure中关于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 APIElasticSearch进行交互,因此项目由原先的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:9200username: elasticpassword: 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/

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台