导语
  在SpringBoot2.0中首先支持了动态Gif启动Logo的打印。在SpringBoot1.0的项目中src/main/resources 路径下新建一个banner.txt文件,文件中写入一些字符,在启动项目的时候会发现默认的Banner会被这个文件中的内容替换掉,到了SpringBoot 2.0 可以支持GIF动态文件的打印,SpringBoot在启动的时候,会将GIF图片的每一个动画画片按照顺序打印到日志中,所有的画面打印完成之后才会启动SpringBoot的项目。所以说在项目启动的Banner中添加一些东西是对产品以及团队的认同感。

文章目录

  • 1.0升级到2.0API的变化
    • 启动类SpringBootServletInitializer
    • Spring Boot 2.0 默认不包含log4j,建议使用的slf4j
    • Thymeleaf 3.0 默认不包含布局模块
    • 配置文件
    • WebMvcConfigurerAdapter过期
    • Spring Boot JPA 变化
    • 增加主键自增策略
    • 分页组件变化
    • 对于JPA关联查询更新
    • 其他
  • 总结

1.0升级到2.0API的变化

  从SpringBoot1.0升级到2.0之后,有很多的API已经过时了,在使用的时候需要注意。

启动类SpringBootServletInitializer

SpringBoot 部署到Tomcat中去启动的时候需要启动类加载SpringBootServletInitializer,2.0和1.0的区别是在1.0中如下

import org.springframework.boot.web.support.SpringBootServletInitializer;

在2.0中如下

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

Spring Boot 2.0 默认不包含log4j,建议使用的slf4j

import org.apache.log4j.Logger;protected Logger logger = Logger.getLogger(this.getClass());

改为

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;protected Logger logger = LoggerFactory.getLogger(this.getClass());

Thymeleaf 3.0 默认不包含布局模块

  在SpringBoot2.0 中spring-boot-starter-thymeleaf包默认不包括布局模块,使用Thymeleaf对页面进行布局的时候需要单独添加对应的依赖。

<dependency><groudId>nz.net.ultarq.thymeleaf</groudId><artifactId>thymeleaf-layout-dialect<artifactId/>
</dependency>

layout:decorator标签在3.0的时候过期了,推荐使用的标签是layout:decorate进行页面布局。

配置文件

  大量的Servlet专属的server.* 配置被移动到了server.servlet.* 这个也就是为什么在配置项目路径的时候为什么会是以server.servlet开头的配置。
例如

老配置1.0 新配置2.0
server.context-parameters.* server.servlet.context-parameters.
server.context-path server.servlet.context-path

  原来在spring.http.* 或者是在spring.server.* 下的配置参数例如上传文件的参数,被修改到了spring.servlet.multipart下的配置。

WebMvcConfigurerAdapter过期

  在之前用户自定义的SpringMVC的配置都是通过继承者类来实现的,而这个类继承了WebMvcConfigurer接口
在1.0中的用法

public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter

在2.0中的用法是
第一种用法是

public class MyWebMvcConfigurerAdapter implements WebMvcConfigurer

第二种

public class MyWebMvcConfigurerAdapter extends WebMvcConfigurationSupport;

Spring Boot JPA 变化

去掉xxxOne()方法
  在之前的用法中有findOne()方法其实就是根据传入的ID值找到对应的对象,在SpringBoot2.0de Respository 中可以添加findById(long id)来实现同样的功能。
例如

Person person = personRespository.findOne(long id)

改为手动在personRespository中添加findById()方法,在使用的时候将调用findOne方法改为调用findById

Person person = personResponsitory.findById(long id);

  delete()方法也被取消掉了,可以使用deleteById(long id),还有一点值得注意的就是这个方法的返回值为void。

Long deleteById(Long id)

修改为

void deleteById(Long id)

当然为了适应上面两种变化通过下面的这种方式也可以解决上面的变化,就是自定义的SQL,但是这个方法并没有上面描述的方式这么实在来的方便,不建议使用

@Query("select * from Person where id = Id)
Person getPersonById(@Param("Id") Long id);

增加主键自增策略

  SpringBoot 需要指定主键的自增策略,这个与SpringBoot1.0 是有区别的,在1.0中会默认使用默认策略,但是在2.0如果不指定自增策略则会报错

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

分页组件变化

  在SpringBoot2.0的时候推荐使用的分页方式如下

Pageable pageable = PageRequest.of(page,size,Srot.by(Sort.Direction.ASC,"id"))

当然也可以使用其他的分页方式例如

 <!--分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.3</version></dependency>

对于JPA关联查询更新

  在SpringBoot1.0的时候,使用JPA的关联查询会创建一个接口对象来对于结果集作为中间缓存收集工作。

public interface Person{Long getId();Long getNumber();String getName(};

  在1.0中如果没有查询到对应的字段返回为空,而在2.0中会直接报空指针异常,也就是说在2.0的时候对于查询返回结果检查更为严格。

其他

  在使用的时候还发现一些1.0与2.0之间的不同,例如在SpringBoot2.0创建SpringCloud基础项目的时候对于SpringCloud的支持,对于配置文件的支持等等,SpringBoot2.0还新增加了很多的启动器。可以更加方便的使用。但是这也带来一个很大的问题,就是版本不适配的问题。那么要不要升级呢?

是否升级操作
  在SpringBoot2.0中相对于1.0中新增加的东西还是蛮多的,并且更为重要的一点是SpringBoot2.0最低依赖的JDK版本是1.8版本,也就是说在SpringBoot2.0中可能使用了大量的JDK1.8的新特性。估计没有任何一个大型公司可以这么着急将所有产品都换成JDK1.8。很多的时候在一个大的版本更新之后难免会遇到一些Bug所以现在支持的Spring2.2.x等作为最新版本来说使用起来还是不是很稳定的,当然在官网上面可能推荐最新的稳定版本。可以尝试使用进行了解。
  Spring Boot 2.0 伴随着Spring5 来袭。标志着SpringBoot技术栈以及SpringCloud技术栈的成熟,同时,支持JDK1.8版本也标志这Java编程新时代的到来。

总结

  SpringBoot2.0 的到来标志着在原来的基础上淘汰了一些API并且提供了很多新技术的支持,Spring技术栈正在不断的完善。在学习SpringBoot的同时也要注意Spring的变化,以及SpringBoot对于微服务的技术支持。在微服务火热的当下,希望大家可以更好的学习到一手的学习资料。

SpringBoot2.0都更新了那些内容相关推荐

  1. Spring Boot 2.0 都更新了什么

    Spring Boot 2.0 都更新了什么 2018 年 3 月 1 号 Spring Boot 2.0.0.RELEASE 正式发布,这是 Spring Boot 1.0 发布 4 年之后第一次重 ...

  2. tensorflow 版本列表_最新|谷歌发布TensorFlow 1.3.0版本,都更新了哪些内容?

    我们所有预构建的二进制文档已用 cuDNN6 构建.我们预期在 TensorFlow 1.4 中用 cuDNN7 import tensorflow 运行地更快 向 GCS 文件系统中增加了一个文件缓 ...

  3. lol12月25服务器维护,lol12月25日更新了什么内容_lol12月25日停机更新公告

    lol12月25日更新了什么内容?lol12月25日停机更新公告在lol游戏中,为了让大家有个更好的游戏体验环境.lol将于12月25日对游戏进行了停机更新,那本次都更新了哪些内容?很多玩家都不知道, ...

  4. ff14服务器维护时间,《FF14》10月15日国服维护到几点 5.0新版本更新维护公告

    最终幻想14的国服将会在10月15日这天进行更新维护,并且也公布了最新5.0的更新笔记全部内容汇总以及具体的更新时间,下面就来为大家详细的介绍一下最终幻想14的更新维护公告. 亲爱的冒险者: 我们将于 ...

  5. 刺激战场雪地地图都更新了什么?另附雪地地图圣诞树最全位置攻略

    刺激战场新增雪地地图都更新了哪些内容?新地图加入的圣诞树具体位置又分别在哪里呢? 刺激战场本次12月21日更新的地图受到很多玩家的关注,光是微博热搜,更新之前就上了两次.更新之后加入了圣诞模式,还有很 ...

  6. SpringBoot2.0基础案例分类总结,后续更新计划说明

    一.基础案例 1.基础案例概览 历时一个半月,SpringBoot2.0基础案例的文章基本更新完毕了,基础案例包含了SpringBoot的基础教程,高级应用,日志配置,数据库使用,事务管理等.关于Sp ...

  7. android wear2.0 更新,android wear2.0下载更新发布 更新内容详情

    androidwear2.0下载更新内容: 本次更新发布后,谷歌还联合LG发布了首批支持AndroidWear2.0的两款智能手表--lgwatchsport/style,将于2月10日上市.下面一起 ...

  8. 安卓微信7.0.12内测更新!快来看看都更新了什么?

    前几天分享了怎样查询身份证绑定了哪些微信?,有很多小伙伴反馈提示"账号异常"的问题,我咨询了客服是因为官方限制了查询!大家可以过几个小时再试! 还有就是FilzaEscaped证书 ...

  9. 这是一篇优雅的Springboot2.0使用手册

    最近再研究springboot的原理?颇有收获,现在让我分享一下springboot如何使用吧~ 想要解锁更多新姿势?请访问我的博客 啥是Springboot 和书上理解的不同,我认为Springbo ...

最新文章

  1. 【c语言】蓝桥杯算法提高 3-1课后习题2
  2. (021)java后台开发之HttpServletRequest
  3. 2021 年4月数据库流行度排行榜出炉!Snowflake 和 Clickhouse上升迅速!
  4. 深度学习100例-卷积神经网络(LeNet-5)深度学习里的“Hello Word” | 第22天
  5. Java –从列表中删除所有空值
  6. 一个神奇的测试_这4个在线黑科技工具拥有神奇的魔法,值得收藏!
  7. “局域网聊天”开始了
  8. 什么可以搜python答案_超星Python程序设计答案章节测试答案免费,能搜索网课答案的公众号...
  9. PyTorch 1.0 中文官方教程:什么是 PyTorch
  10. python request.get_Python request.get_data方法代码示例
  11. HPE Comware Lab - Simulator
  12. 《数学分析(上)》重要概念复习
  13. 高通 锁定DDR频率
  14. 2022年测试工程师面试题大合集「 功能测试,自动化测试等」300道题
  15. 【web安全】——文件上传漏洞
  16. keep怎么弄轨迹动画_keep怎么录视频?教学视频录像和轨迹动画视频录制方法介绍...
  17. 字体设计中什么是断笔设计啊
  18. ue4 后期处理景深_Unreal Engine4 后期处理特效 VOL1
  19. Git版本控制管理(二)--git配置
  20. 计算机桌面设备管理器,电脑设备管理器在哪里打开【图文】

热门文章

  1. bubble html5,利用HTML5 Canvas创建交互式Bubble Chart
  2. dns bind配置教程
  3. apache性能优化
  4. GL-关于intercopany 和intracompany 的个人理解
  5. JQuery + XML作为前后台数据交换格式实践
  6. Web应用——焦点图自动浏览
  7. 边缘计算的爆发为安防全产业带来了怎样的变化?
  8. 浪潮服务器 NF 8460M4 的PM8060 RAID卡设置添加热备方法
  9. spring boot 的使用(一)
  10. SSH远程登录VWware上的LFS