转载

Spring Boot 2.0升级小记

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
@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.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: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/

原文  http://www.wisely.top/2018/02/28/springboot2-upgrade-2/
正文到此结束
Loading...