Spring Boot 2.0 都更更新了什么——Spring Boot(二)

使用 Docker 部署 Spring Boot 项目 1.美图 2.概述 如今 Docker 的使⽤用已经⾮非常普遍,特别是在⼀一线互联⽹网公司,使⽤用 Docker 技术可以帮助企业快速⽔水平扩展 服务,从⽽而达到弹性部署业务的能⼒力力。在云服务概念兴起之后, Docker 的使⽤用场景和范围进⼀一步发展,如今 在微服务架构越来越流⾏行行的情况下,微服务 + Docker 的完美组合,更更加⽅方便便微服务架构运维部署落地。 3.什什么是 Dock... 阅读详情

Spring Boot 2.0支持了动态Gif的启动Logo打印。

在Spring Boot 1.0项目中 src/main/resources 路径下新建一个banner.txt文件,文件中写入一些字符,启动项目时就会发现默认的 Banner被替换了,到了Spring Boot2.0现在可以支持Gif文件的打印,Spring Boot2.0在项目启动的时候,会将Gif图片的每一个画面,按照顺序打印在日志中,所有的画面打印完毕后,才会启动Spring Boot项目。
 

项目的启动Banner 有什么用呢,在一些大的组织或者公司中,可以利用这个特性定制自己专属的启动画面,增加团队对品牌的认同感。
 

1.0升级2.0API变化

从Spring Boot 1.0升级到2.0之后,有很多的API已经过时,在使用的时候需要注意。


启动类SpringBootServletlnitializer

Spring Boot 部署到Tomcat中去启动时需要在启动类添加SpringBootServletlnitializer,2.0和1.0有区别。
 

// 1.0
import org.springframework.boot.web.support.SpringBootServletInitializer;
// 2.0
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class UserManageApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder applicat
ion) {
return application.sources(UserManageApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(UserManageApplication.class, args);
}
}

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 默认不包含布局模块

Spring Boot 2.0 中spring-boot-starter-thymeleaf 包默认并不包含布局模块,使用Thymeleaf 对页面进行布局时,需要单独添加布局模块,如下:
 

<dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>

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

配置⽂文件

大量的Servlet 专属的server.*被移到了server.servlet.*下:

原spring.htp.*或spring.server.*下的一些参数,例如我用到了文件上传参数,已修改为sping.servlet.multipart下。

WebMvcConfigurerAdapter 过期

Spring Boot2.0中将原来的WebMvcConfigurerAdapter 替换为WebMvcConfigurer。

1.0中的用法:

public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter

2.0 中的用法:

public class MyWebMvcConfigurerAdapter implements WebMvcConfigurer

Spring Boot JPA 变化

去掉了xxxOne)方法

以前的findOne()方法其实就是根据传入的ID来查找对象,所以在Spring Boot2.0的Repository中我们可以添加findByld(long id)来替换使用。
 

例如:

User user=userRepository.findOne(Long id)

改为手动在userRepository手动添加findByld(long id)方法,使用时将findOne()调用改为fimdByld(long id)。
 

User user=userRepository.findById(long id)

delete()方法和findOne()类似也被去掉了,可以使用deleteByld(Long id)来替换,还有一个不同点是deleteByld(Long id)默认实现返回值为void。

Long deleteById(Long id);

改为:

//delete 改为 void 类型
void deleteById(Long id);

当然我们还有一种方案可以解决上述的两种变化,就是自定义SQL(如下),但是没有上述方案简单,不建议使用。
 

@Query("select t from Tag t where t.tagId = :tagId")
Tag getByTagId(@Param("tagId") long tagId);

需要指定主键的自增策略

Spring Boot2.0需要指定主键的自增策略,这个和Spring Boot1.0有所区别,1.0会使用默认的策略,如果不指定自增策略会报错。
 

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

分页组件PageRequest 变化

在Spring Boot2.0中,方法new PageRequest(page,size,sort)已经过期不再推荐使用,推荐使用以下方式来构建分页信息:
 

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

跟踪了一下源码发现PageRequest.of()方法,内部还是使用的new PageRequest(page,size,sort),只是最新的写法更简洁一些。
 

public static PageRequest of(int page, int size, Sort sort) {
    return new PageRequest(page, size, sort);
}

JPA关联查询

在使用Spring Boot1.0时,使用JPA关联查询时我们会构建一个接口对象来接收结果集,类似如下:
 

public interface CollectView{
    Long getId();
    Long getUserId();
    String getProfilePicture();
    String getTitle();
}

在使用Spring Boot 1.0时,如果没有查询到对应的字段会返回空,在Spring Boot2.0中会直接报空指针异常,对结果集的检查会更加严格一些。
 

这只是目前升级过程中发现的⼀一些问题,不代表 Spring Boot 2.0 升级中的所有问题,在随后的课程中会再——⼀一介绍。

是否选择升级

通过以上内容可以看出Spring Boot2.0相对于1.0增加了很多新特性,并且最重要的是Spring Boot2.0依赖的JDK最低版本是1.8,估计国内大多互联网公司还没有这么激进。另外一个新的重大版本更新之后,难免会有一些小Bug什么的,往往需要再发布几个小版本之后,才会慢慢稳定下来。

因此我的建议是,如果不是特别需要使用Spring Boot2.0上面提到的新特性,就尽量不要着急进行升级,等Spring Boot2.0彻底稳定下来后再使用。如果想要升级也请先从早期的版本升级到Spring Boot 1.5X系列之后,再升级到Spring Boot2.0版本,Spring Boot2.0的很多配置内容和Spring Boot1.0不一致需要注意。

Spring Boot 1.0发布之后给我们带来了全新的开发模式,Spring Boot 2.0发布标志着Spring Boot已经走向成熟,对Java领域带来的变革已经开启!

总结

可以看出Spring Boot2.0是历时4年开发出来的巨作,在Spring Boot1.0的基础上进行了大量的优化,淘汰了很多过期的API,同时引入了一大批最新的技术,这些新技术在未来的一段时间内都具有引导性。在我们学习Spring Boot2.0的同时,需要同时学习Spring Boot2.0引入的一些新技术,不建议大家在生产环境直接进行升级,等Spring Boot 2.0进一步稳定之后再升级替换。

Spring Boot Admin 的使⽤ 1.美图 2.概述 Spring Boot Actuator 提供了对单个 Spring Boot 应⽤的监控,信息包含应用状态、内存、线程、堆栈等,比较全面的监控了 Spring Boot 应用的整个生命周期。 但是这样监控也有⼀些问题: 第一,所有的监控都需要调⽤固定的接⼝来查看,如果全⾯查看应⽤状态需要调⽤很多接⼝,并且接口返回的 JSON 信息不⽅便运营⼈员理解; 第⼆,如果 Spri... 阅读详情

相关推荐

[技术解析]4DGS:突破实时动态渲染的4D高斯溅射技术

本文深入解析了4DGS(4D Gaussian Splatting)技术,它通过引入时间维度,将静态的3D高斯溅射升级为动态的4D表示,实现了对复杂动态场景的高质量实时渲染。该技术利用时空联合编码器与高斯形变场网络,结合多分辨率编码与差分溅射渲染,在VR/AR、高帧率游戏等领域展现出突破性的应用潜力,兼顾了渲染速度与画面稳定性。

weixin_29218509的博客 411

关于SpringBoot中SpringBootServletInitializer

首先声明本文仅用于笔者本人工作学习。 关于SpringBoot项目的启动: 1.通过SpringBoot自带的Application启动类中的run方法启动项目。 2.通过外置的Tomcat服务器启动: 这里的使用情况是当我们出现需要使用外置Tomcat服务器的场景时。 让初始存在的Application启动类继承SpringBootServletInitiailzer类并重写里面的Configure方法。 当然我们自己也需要额外的配置我们设定的所谓的外置的Tomcat服务器。 public class T

Peanut的博客 2627

实现高精度卷积混响--MATLAB仿真篇

一、前言 之前在STM32F407上现实了直播声卡,实现的经典Schroeder混响模型和Moorer混响模型,得到不错效果。后来得知卷积混响最为真实地表现空间的特性,所以也就尝试在MCU上实现一个高精度的卷积混响(卷积点数为32768),目前MCU出来的混响效果算得上一流水准,本人也在计划在ADI的21489或者SC584上更高精度的卷积混响。 二、卷积方式 1、conv1是使用MATLAB自带卷积函数conv 2、conv2和conv3是改进后卷积过程,具有减少运算量特点,方便嵌入式移植 clear;

Six44的博客 5079

SpringBoot 中的 ServletInitializer

(一)代码部分 ServletInitializer 中代码 在 SpringBootServletInitializer 中 在 WebApplicationInitializer 中 (二)分析 一、对 WebApplicationInitializer 的理解 现在JavaConfig配置方式在逐步取代xml配置方式。而WebApplicationInitia...

殇莫忆的博客 5万+

基于STM32单片机设计的智能水温控制系统

本项目研究并实现了一种基于STM32单片机的智能水温控制系统。系统以STM32F103RCT6作为主控制器,通过DS18B20温度传感器实时采集水温数据,利用PID控制算法精确调节5V直流防水型70W加热棒的功率输出,确保水温恒定在设定范围内。此外,采用OLED显示屏显示当前水温和预设上限阀值,并集成ESP8266-WiFi模块与自研Android手机APP进行远程通信和控制。用户可通过本地按键或手机APP设置温度阀值,实现实时监控与智能化管理。整个系统设计旨在提高水资源利用效率,提升生活及工业用水环境的舒

8790

深入解析Linux驱动开发中的I2C时序及I2C高频面试题

在 I2C 通信中,主设备和从设备的角色有着明确的定义。主设备是发起通信的设备,它负责控制整个通信过程。主设备可以是微控制器、处理器等具有控制能力的设备。

大模型大数据攻城狮的专栏 2764

Springboot的servlet配置

Springboot的servlet配置 SpringBoot默认使用Tomcat作为嵌入式的Servlet容器; 如何定制和修改Servlet容器的相关配置; 1、修改和server有关的配置(ServerProperties【也是EmbeddedServletContainerCustomizer】); //通用的Servlet容器设置 server.xxx //Tomcat的设置 server.tomcat.xxx 2、编写一个EmbeddedServletContainerCustomizer:

whlikect的博客 301

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7892

SpringBoot - 如何使用SpringBootServletInitializer将SpringBoot项目打成WAR包并部署TOMCAT中

SpringBootServletInitializer让SpringBoot将应用程序以 WAR 包的形式部署在外部的SERVLET容器中(如 Tomcat、Jetty、Undertow等),并提供一种简单的配置外部SERVLET容器的方法。

记录并分享 2122

大疆A型板使用经验分享(四)—— PWM和舵机SG996的控制

一. j

weixin_43361652的博客 3879

【PostgreSQL】PostgreSQL数据库函数比对模板(PG通用)

LOOKUP 函数从单行或单列区域 (区域:工作表上的两个或多个单元格。区域中的单元格可以相邻或不相邻。)或数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。LOOKUP 函数具有两种语法形式:向量形式和数组形式。vlookup查找匹配值超过255个字符显示#Value的解决办法。如果值为错误值 #N/A,则返回 TRUE。

tttzzzqqq2018的博客 1494

Spring boot --SpringBootServletInitializer启动springboot项目的方式之一

方式一: 默认的application启动,在创建项目时自动生成application启动类,直接run执行即可。 方式二: 默认的启动类需要继承SpringBootServletInitializer类,并重写configure方法 SpringBootServletInitializer的执行过程,简单来说就是通过SpringApplicationBuilder构建并封装SpringApplication对象,并最终调用SpringApplication的run方法的过程。 Spring boot 就

qq_43354717的博客 4448

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Spring Boot 都更新了什么(上)1-2

2018 年 3 月 1 号 Spring Boot 2.0RELEASE 正式发布,这是 Spring Boot 1.0 发布 4 年之后第一次重大修 订,因此有多新功能和特性值得关注!在 Spring Boot 官方博客中我们了解到: Spring Boot 2.0 版本经历了 17 个月的开发,有 215 个不同的使用者提供了超过 6800 次的提交。 我们将 Spring Bo...

qq_34227896的博客 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Spring Boot 都更新了什么(下)1-3

Spring Boot 2.0 支持了动态 Gif 的启动 Logo 打印。 在 Spring Boot 1.0 项目中 src/main/resources 路径下新建一个 banner.txt 文件,⽂件中写入一些字符,启动 项目时就会发现默认的 Banner 被替换了,到了 Spring Boot 2.0 现在可以支持 Gif 文件的打印, Spring Boot 2.0 在项目启动...

qq_34227896的博客 8164

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring Boot 基础 对Web 开发的支持

自从 B/S 架构(Browser/Server,浏览器/服务器模式)被发明以来,因为其具有跨平台、易移植、方使用 等特点,迅速地成为了技术架构的首选,前端 Web 技术迅速发展起来。人们利用前端 Web 技术构建各种应 用场景,如电子商务平台、在线聊天室、后台管理系统等。页面技术也从最初的 JSP 演化为现在的模板引 擎;信息交互由以前的 XML 发展到现在更更流行的 JSON; Spring Filter、 IoC、 Aop 等概念的发展更加方便人 们构建 Web 系统。 Spring Boot 对.

weixin_44659712的博客 226

1.Spring Boot 基础

SpringBoot 设计理念 约定优于配置 约定优于配置(Convention Over Configuration),也称作按约定编程,是⼀一种软件设计范式,旨在减少软件开发⼈人员需做决定的数量量、获得简单的好处,⽽而⼜又不不失灵活性。 Starters Spring Boot Starters 基于约定优于配置的理理念来设计,Spring Boot Starter 中有两个核心组件:...

我是谁,我在哪,我在干嘛 278

SpringBoot 使用 Spring Boot 上传文件到 FastDFS 2-8

什么是 FastDFS FastDFS 是一个开源的轻量级分布式文件系统,它解决了大数据量存储和负载均衡等问题,特别适合以中小文件(建议范围: 4 KB < file_size < 500 MB)为载体的在线服务,如相册网站、视频网站等。在 UC 基于FastDFS 开发向用户提供了网盘、社区、广告和应用下载等业务的存储服务。 FastDFS 由 C 语言开发,支持 Lin...

qq_34227896的博客 1万+

Spring Boot 产生的背景和它的设计理念 1-1

要了解 Spring Boot 产⽣的背景,我们就必须要先了解一下 Spring 发展史,不仅因为 Spring Boot 来源于 Spring 体系,而且 Spring Boot 的诞⽣生和 Spring 框架的发展息息相关 Spring 发展历史 时间回到 2002 年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采⽤用此技术方案进行项目 开发。这时候...

qq_34227896的博客 1516

springboot 入门(一)

1、Spring Boot 2.0 更新了什么 基础环境升级 Spring Boot 2.0 要求 Java 8 作为最低版本。 Spring Boot 2.0 通过了在 JDK 9 下的测试,可以在 JDK 9 下正常运行,同时 Spring Boot 2.0 宣布不再⽀支持 Java 6 和 7,最低 JDK 8,支持 JDK 9。 依赖组件升级 本次 Spring Boot 2...

RookieMZL 的博客 259

Spring 5.0版本全家桶四

Web 开发进阶 设计好的 RESTful Web Service Roy Thomas Fielding:REST提供了⼀组架构约束,当作为一个整体来应⽤时,强调组件交互的可伸缩性、接⼝的通用性、组件的独⽴部署、以及用来减少交互延迟、增强安全性、封装遗留系统的中间组件。 Richardson 成熟度模型 Richardson使用三个因素来决定服务的成熟度,即URI,HTTP方法和HATEOAS(超媒体)。服务越多采用这些技术 - 应该考虑更成熟。 Level 0 成熟度的零级别不使用任何URI,HT

gonghaiyu的博客 493

Spring Boot 依赖环境和项目结构介绍 1-4

使用 Spring Boot 开发项目需要有两个基础环境和一个开发工具,这两个环境是指 Java 编译环境和构建工具 环境,一个开发工具是指 IDE 开发工具。 Spring Boot 2.0 要求 Java 8 作为最低版本,需要在本机安装 JDK 1.8 并进行环境变量配置,同时需要安装 构建工具编译 Spring Boot 项目,最后准备一个顺手的 IDE 开发工具即可。 构建...

qq_34227896的博客 2万+

SpringCloud(22)—— Spring Boot 内置容器配置参数优化指南

Spring Boot 内置容器 优化指南 0. 基础 具体的配置参考common-application 1. 使 用Tomcat作为内置容器 tomcat的影响性能的配置项是:   server.tomcat.max-connections=0 # 最 大链接数   server.tomcat.max-threads=0 # 工作线程数 内置tomcat容器 ...

weixin_30642029的博客 496

SpringBoot:项目构建及配置

本文参考《精通Spring Boot 42讲》。 我们有两种方式来构建 Spring Boot 项目基础框架, 第一种是使用 Spring 官方提供的构建页面; 第二种是使用 IntelliJ IDEA 中的 Spring 插件来创建。 使用Spring官方提供页面构建 访问 http://start.spring.io/ 网址。 选择构建工具 Maven Project,编程语言选择...

LOG_IN_ME的博客 370

springcloud---part1

分布式架构--微服务常见的组成 微服务中常见的组件: 网关:可以实现限流等功能,用户的请求到达网关后,可以根据对应的用户的url转发到对应的服务。路路由转发 + 过滤器器 配置中⼼心:管理理配置,动态更更新 application.properties 负载均衡器器:分发流量量到多个节点,降低压⼒力力 链路路追踪:分析调⽤用链路路耗时 例例⼦子:下单-》查询商品服务获取商品价格-》查询⽤用户信息-》保存数据库 创建项目-导入依赖 需要引入spring boot的依赖+spri...

weixin_45063957的博客 281

基于 Consul 的配置中心

Spring Cloud Consul Config 依赖 加入 spring-cloud-starter-consul-config 启用 在 bootstrap.properties | yml 中 加入相关配置 • spring.cloud.consul.host=localhost • spring.cloud.consul.port=8500 • spring.cloud.consul...

weixin_43790623的博客 2026
上一篇: Spring Boot 产⽣生的背景和它的设计理理念——Spring Boot(一)
下一篇: Spring Boot 依赖环境和项⽬目结构——Spring Boot(三)
无知是恶
博客等级 码龄7年 9粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值