SpringBoot2学习之springboot与spring区别分析
作者:把苹果咬哭的测试笔记 发布时间:2023-02-22 17:44:28
springboot与spring区别
一、spring 可以做什么
之前已经学习了 spring 的 IOC容器、AOP、springMVC 开发web应用等等,这里的 spring 实际是指 spring-framework 这个框架。
然而,宏观上的 spring 是一个生态圈。
spring 可以做什么?参考官网:
微服务开发:当系统功能越来越多,就需要进一步拆分系统功能,一个模块一个应用,spring 可以帮助快速开发微服务。
响应式编程:基于异步非阻塞,可以通过整个应用之间构建异步数据流的方式。异步数据流允许占用少量的资源,比如线程、内存、CPU等,构建一个高吞吐应用。
cloud 分布式云开发:将大型应用拆分成微小应用之后,就会产生分布式应用,cloud 提供解决方案。
开发web应用:像之前示例里的,利用框架完成页面和后台系统的交互
serverless:无服务开发。简单来说,函数即服务,无需购买任何服务器,上到云平台,按照实际占用的资源计费,节省成本。
事件驱动:基于事件的方式构建实时数据流,可以通过响应式编程,完成高吞吐应用的开发。
batch:批处理业务。
spring 生态圈里有丰富的内容,这些组合起来就可以帮我们完成这么多事情,上面也只是几大特色而已。
当然,在使用生态圈里的内容进行整合使用的过程中也是有点痛苦的,往往会陷入"配置地狱"。这一点,在之前的springMVC学习中也已经有所体验了,这还仅仅是整合了 springMVC 而已。
那么,谁来解决这个问题呢?没错,就是springboot。
二、springboot
解放繁琐的配置,是springboot与生俱来的使命。
springboot 就相当于是一个高层的框架,底层还是spring-framework。它可以整合整个 spring 系列的技术栈,帮我们完成应用开发,不用写那么多繁重的配置。
打个比方,你买电脑虽然可以自己 diy组装,但是需要非常强的动手能力。但是大多数人还是喜欢省事点,直接买个品牌机器,开箱即用。
本次学习是基于springboot2,由于spring5引入了重大升级,所以springboot2相比之前版本也是有不少的使用变化。
spring5 中的大更新就是响应式编程,对应的在 springboot2中,数据访问层就支持了构建异步数据流的方式进行响应式开发。
SpringBoot 优点
创建独立Spring应用
内嵌web服务器:在之前springmvc 开发应用,最终把应用打成一个war包,最终部署到tomcat上。所以,目标环境里还需要装tomcat,进行配置等。
使用soringboot,目标环境即使没有tomcat也没关系,这里已经集成了,直接运行即可。
自动 starter 依赖,简化构建配置:
之前开发springmvc,需要导入一大堆依赖,现在只需要导入一个依赖web-starter。另外还可以自动帮我们控制好导入的版本,保证可以协同工作。
自动配置Spring以及第三方功能:这个就是我们最喜欢的,可以解放配置的功能。
提供生产级别的监控:提供生产级别的监控、健康检查及外部化配置。几乎不用任何配置,运维人员就可以监控到指标。
无代码生成,无需编写 xml:底层自动发现场景,进行配置。
总之,springboot是整个 spring 技术栈的一站式框架。或者说是,简化 spring 技术栈的快速开发脚手架。
SpringBoot 缺点
版本抵达快,需要时刻关注变化。这也变相说明生态社区非常活跃,其实也不算是个缺点,算特点。
封装太深,内部原理负责,不容易精通。
三、如何学习 springboot
最好的老师,还得是官方文档
地址:https://spring.io/projects/spring-boot
进入官方地址后,点击LEARN可以看到有好多版本,以正式稳定版为主,点击2.5.4 GA后的文档连接,进入说明文档。
文档结构
大概分为下面的模块:
官方文档是后续学习过程中,依赖的重要学习资料。
如果要去了解版本的更新内容,
可以到 https://github.com/spring-projects/spring-boot/wiki#release-notes
查看版本日志。
来源:https://blog.csdn.net/wessonlan/article/details/124812953


猜你喜欢
- 前言为什么要动态设置字体大小?由于项目面对的是中老年客户项目中自带的字体无法满足客户需求。Android应用字体大小默认随系统设置的字体大小
- springboot重定向外部网页package com.liangxs.web;import java.io.IOException;im
- 一、常见场景1、ThreadLocal作为线程上下文副本,那么一种最常见的使用方式就是用来方法隐式传参,通过提供的set()和get()两个
- 若干年前在使用SpringMVC的时候,发现springMVC可以把HttpSession,HttpRequest组件化注入:@Autowi
- JSR303简介JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernat
- 单例模式用于保证在程序的运行期间某个类有且仅有一个实例。其优势在于尽可能解决系统资源。通过修改构造方法的访问权限就可以实现单例模式。代码如下
- 本文为大家分享了java微信公众号企业付款的开发代码,供大家参考,具体内容如下详情参照微信开发者文档 企业付款文档 java代码
- Java的接口和抽象类深入理解对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。
- 在我们实现某些功能时,可能会有倒计时的需求。比如发送短信验证码,发送成功后可能要求用户一段时间内不能再次发送,这时候我们就需要进行倒计时,时
- 本文考虑把账单界面整理下,实现如下图中的功
- 本文实例讲述了java中Object类用法。分享给大家供大家参考。具体如下:1、Object类是所有java类的基类如果在类的声明中未使用e
- private void button1_Click(object sender, EventArgs e) &nbs
- AsnyncLocal与ThreadLocal都是存储线程上下文的变量,但是,在实际使用过程中两者又有区别主要的表现在:AsyncLocal
- 前言很多朋友都想开始自己的Android开发之旅,但是遇到困难重重。从最开始接触Android开发,从搭建开发环境就花了我大部分时间。所以,
- 一、着色游戏概述近期群里偶然看到一哥们在群里聊不规则图像填充什么四联通、八联通什么的,就本身好学务实的态度去查阅了相关资料。对于这类着色的资
- 1、堆的定义①、它是完全二叉树,除了树的最后一层节点不需要是满的,其它的每一层从左到右都是满的。注意下面两种情况,第二种最后一层从左到右中间
- 我们主要介绍一下:java中如何通过最简单的方式实现链式创建json对象,解决创建json代码臃肿的问题。1、假设我们要创建一个json对象
- 现假设某个公司采用公用电话来传递数据,数据是四位的整数,在传递过程中是加密的。加密规则是每位数字都加上5,然后再用除以10的余数代替该数字,
- 苹果上的UI基本上都是这个效果,然而Android机上的顶部状态栏总是和app的主题颜色不搭。还好如今的api19以上的版本,我们也能做出这
- 首先介绍一下Java解释器的概念,Java解释器:解释器是Java虚拟机非常重要的一部分,它的工作就是把字节码转化为机器码并在特定的平台进行