有了 Spring 为什么要再弄一个 Spring Boot

多线程舞者
• 阅读 2092

有了 Spring 为什么要再弄一个 Spring Boot

1. 前言

刚刚入行 Java 的同学经常有这种疑问: SpringSpring Boot 有什么关系?它们之间有什么区别?今天来探讨一下这个问题。

2. Spring Framework

Spring 通常指的是 Spring Framework 。通常 Java 开发就是面向对象开发、面向抽象接口开发。而软件项目大多都是“堆积木”,随着版本迭代会越来越大,这造成了个很大的问题就是对象的管理。刚好 Spring 的控制反转,依赖注入,切面编程的特性对这些类生命周期的管理,组件模块化,基础层和业务分离解耦提供了很大的便利。就像粘合剂一样把各种功能的库“粘”到一起,让它们协同工作。

有了 Spring 为什么要再弄一个 Spring Boot

除了上图中的一些功能特性外,Spring Framework 另外有个很少被提及的特点,它很少去造轮子,它只作上层的适配,作为一个中间抽象层。这种好处在于灵活,使用者可以根据场景切换技术栈;另外这成就了 Spring Framework 成为事实上 J2EE 的标准。 Spring Framework 已经成为 Java 开发必须掌握的基本框架,很多时候我们开发就是跟它打交道。

3. Spring Boot

Spring Framework 经过数年的迭代已经丧失了轻量级的标签。在享受 Spring Framework 带来的便利的同时,我们又进入了另一个噩梦:大量的 XML 配置。 Spring 使用者不单单要写业务代码,还要通过编写对应的 XML 配置,引入其它组件或者功能类库也要进行繁琐的适配,这偏离了 Spring Framework 最初设计的初衷。所以 Spring Boot 被设计出来。

有了 Spring 为什么要再弄一个 Spring Boot

Spring BootSpring Framework 的功能进行了扩展,将繁琐的配置功能进行了内部整合,通过一些自动化的配置和类似 SPI 的发现机制来自动感知功能组件,大大降低了使用成本,而且保证了和Spring Framework 的一致性。

简便

Spring Boot可以快速通过引导式的步骤搭建一个生产级企业应用开发平台,而无需繁琐的配置。而且提供了默认配置,甚至你可以达到零配置接入。

灵活

Spring Boot同时对常用的功能进行了组件化的抽象,可以按需引用。另外也指定了一揽子的组件规范让开发者可以自行实现符合 Spring Boot 风格的组件(Starter),让你实现插件化开发。

集中

每一个版本的依赖都经过测试和挑选,对各个组件进行了集中管理,构成一个 parent 集合,减少了依赖冲突的可能性。

敏捷

Spring Boot通过一些注解简化了之前的开发和配置,减少了模板代码的编写,加快了开发速度。内置Web 容器甚至可以以 Jar 的方式快速部署运行。

4. 两者之间的关系

Spring FrameworkSpring Boot 的根本是一致的。Spring BootSpring Framework 的引导程序以简化其配置和使用。而Spring FrameworkSpring Boot 的基础,Spring Boot 无法脱离 Spring Framework 。用户通过上层 Spring Boot 的引导来使用 Spring Framework

有了 Spring 为什么要再弄一个 Spring Boot

5. 总结

今天对 Spring FrameworkSpring Boot 之间的关系进行了简单说明,希望能够帮助一些学习者的疑惑。有什么问题可以留言讨论,也可以关注公众号:Felordcn 私信留言,同时关注可直接获取学习资料进行学习。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这