从Spring Boot 1.5升级到2.0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Spring Boot 1.5升级到2.0相关的知识,希望对你有一定的参考价值。

POM

  • 1.5
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
    <relativePath/>
    </parent>
  • 2.0
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath/>
    </parent>

Spring Data

Spring Data的一些方法进行了重命名:

  • findOne(id) -> getOne(id)
  • delete(id) -> deleteById(id)
  • exists(id) -> existsById(id)
  • findAll(ids) -> findAllById(ids)

配置

在升级时,可以在pom中增加spring-boot-properties-migrator,这样在启动时会提示需要更改的配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-properties-migrator</artifactId>
    <scope>runtime</scope>
</dependency>

其中改动较大的是security(The security auto-configuration is no longer customizable,A global security auto-configuration is now provided)和management部分。

  • security
    security开头的配置及management.security均已过期,如以下的配置不再支持,需要调整到代码中:
    security:
    ignored: /api-docs,/swagger-resources/**,/swagger-ui.html**,/webjars/**
  • management
    management:
    security:
    enabled: false
    port: 8090

    修改为:

    management:
    server:
    port: 8090
  • datasource
    datasource:
    initialize: false

    修改为:

    datasource:
    initialization-mode: never

如使用PostgreSQL,可能会报错:Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented hibernate,需修改配置:

jpa:
    database-platform: org.hibernate.dialect.PostgreSQLDialect
    properties:
       hibernate:
         default_schema: test
         jdbc:
           lob:
             non_contextual_creation: true

更多需要调整的参数请看文末参考文档。

Security

WebSecurityConfigurerAdapter

  • security.ignored
    @Override
    public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/api-docs", "/swagger-resources/**", "/swagger-ui.html**", "/webjars/**");
    }
  • AuthenticationManager
    如在代码中注入了AuthenticationManager,
    @Autowired
    private AuthenticationManager authenticationManager;

    在启动时会报错:Field authenticationManager required a bean of type ‘org.springframework.security.authentication.AuthenticationManager‘ that could not be found.请在WebSecurityConfigurerAdapter中增加以下代码:

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
    return super.authenticationManagerBean();
    }

Actuator

Actuator访问路径发生了变化,网址前部增加了单词actuator([/actuator/health],[/actuator/info]),这可以在启动日志中看到。

未完待续...

参考文档

Spring Boot 2.0 Migration Guide
Spring Boot 2.0 Configuration Changelog
Spring Boot 2.0 新特性和发展方向

以上是关于从Spring Boot 1.5升级到2.0的主要内容,如果未能解决你的问题,请参考以下文章

从 Spring Boot 1.5 升级时为 Spring Boot 2.0 acuator 框架配置安全性

Spring Boot 2.0干货系列:Spring Boot1.5X升级到2.0指南

雪球 Spring Boot 2.0 升级经验谈

多模块 Gradle 项目 - 从 Spring-Boot 1.5 迁移到 2.1

给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑

在升级到 Spring Boot 2.0 时,得到 UnsatisfiedDependencyException