从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指南
多模块 Gradle 项目 - 从 Spring-Boot 1.5 迁移到 2.1