目录
引言
一.SpringBoot是什么?
二.SpringBoot为什么出现?
三:为什么学习SpringBoot
四:SpringBoot特点:
五.SpringBoot怎么样
六:总结
七:SpringBoot和Spring的关系
八:Spring和SpringBoot区别
引言
在上文中我已经详细介绍了Spring如果还有不懂的小伙伴可以去参考一下
Spring和SpringMvc详细讲解
首先在认识一个东西之前我们先来试着回答三个经典的问题问题,是什么?为什么?怎么样?
一.SpringBoot是什么?
在介绍SpringBoot之前我们首先来简单介绍一下Spring。Spring是诞生于年的Java开发框架,可以说已经成为Java开发的事实标准。所谓事实标准就是虽然Java官方没有说它就是开发标准,但是在当前Java开发的众多项目中,当我们谈到产品级的Java项目的时候,大多都是基于Spring或者应用了Spring特性的。
Spring基于IOC和AOP两个特性对Java开发本身进行了大大的简化。但是一个大型的项目需要集成很多其他组件,比如一个WEB项目,至少要集成MVC框架、Tomcat这种WEB容器、日志框架、ORM框架,连接数据库要选择连接池吧……使用Spring的话每集成一个组件都要去先写它的配置文件,比较繁琐且容易出错。
然后就有了SpringBoot。
SpringBoot是由Pivotal团队提供的全新框架,年4月发布SpringBoot1.年3月SpringBoot2.0发布。它是对spring的进一步封装,其设计目的是用来简化Spring应用的初始搭建以及开发过程。怎么简化的呢?就是通过封装、抽象、提供默认配置等方式让我们更容易使用。
SpringBoot基于Spring开发。SpringBoot本身并不提供Spring框架的核心特性以及扩展功能,也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。
关于SpringBoot有一句很出名的话就是约定大于配置。采用SpringBoot可以大大的简化开发模式,它集成了大量常用的第三方库配置,所有你想集成的常用框架,它都有对应的组件支持,例如Redis、MongoDB、Jpa、kafka,Hakira等等。SpringBoot应用中这些第三方库几乎可以零配置地开箱即用,大部分的SpringBoot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
二.SpringBoot为什么出现?
为什么会产生SpringBoot呢?
刚才说SpringBoot简化了基于Spring开发,这只是最直观的一方面,事实上SpringBoot的诞生有它所处的大时代背景这个原因在里面的,那就是微服务,这也是谈SpringBoot必谈微服务的原因。
年一个叫MartinFowler(同时也是经典著作《重构:改善既有代码的设计》一书的作者)发表了一篇关于微服务的博客,比较形象生动地介绍了什么是微服务,然后微服务才慢慢被人所熟知。他说微服务其实是一种架构风格,我们在开发一个应用的时候这个应用应该是由一组小型服务组成,每个小型服务都运行在自己的进程内;小服务之间通过HTTP的方式进行互联互通。和微服务相对应的就是我们之前的,单体应用,就是大名鼎鼎的allinone的风格。这种风格把所有的东西都写在一个应用里面,比如我们熟悉的OA,CRM,ERP系统,所有的页面,所有的代码都放在一起,打成打成一个war包,然后把war包放在Tomcat容器中运行。
SpringBoot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。同时它集成了大量常用的第三方库配置(如Redis、MongoDB、JPA、RabbitMQ、Quartz等),SpringBoot应用中这些第三方库几乎可以零配置进行开箱即用,大部分的SpringBoot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
这种传统web开发的架构模式当然也有它的优势,比如它测试部署比较简单,因为不涉及到多个服务的互联互调,只需要把一个包上传到服务器就行了,可以说是一人吃饱全家不饿。同样也不会给运维带来麻烦,方便水平扩展,只需要又把相同的应用复制多份放在不同的服务器中就达到了扩展的目的。
单体应用的的缺点也显而易见,容易牵一发而动全身,比如要更改一个小小的功能,就可能需要重新部署整个应用。当然,更大的挑战就是日益增长的用户需求。
三:为什么学习SpringBoot
使用SpringBoot开发项目,有以下几方面优势∶
SpringBoot使开发变得简单,提供了丰富的解决方案,快速集成各种解决方案提升开发效率。
SpringBoot使配置变得简单,提供了丰富的Starters,集成主流开源产品往往只需要简单的配置即可。
SpringBoot使部署变得简单,其本身内嵌启动容器,仅仅需要一个命令即可启动项目,结合Jenkins、Docker自动化运维非常容易实现。
SpringBoot使监控变得简单,自带监控组件,使用Actuator轻松监控服务各项状态。
从软件发展的角度来讲,越简单的开发模式越流行,简单的开发模式解放出更多生产力,让开发人员可以避免将精力耗费在各种配置、语法所设置的门槛上,从而更专注于业务。这点上,SpringBoot已尽可能地简化了应用开发的门槛。SpringBoot所集成的技术栈,涵盖了各大互联网公司的主流技术,跟着SpringBoot的路线去学习,基本可以了解国内外互联网公司的技术特点。
四:SpringBoot特点:
1.独立运行的Spring项目
SpringBoot可以以jar包的形式独立运行,SpringBoot项目只需通过命令“java–jarxx.jar”即可运行。
2.内嵌Servlet容器
SpringBoot使用嵌入式的Servlet容器(例如Tomcat、Jetty或者Undertow等),应用无需打成WAR包。
3.提供starter简化Maven配置
SpringBoot提供了一系列的“starter”项目对象模型(POMS)来简化Maven配置。
4.提供了大量的自动配置
SpringBoot提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。
5.自带应用监控
SpringBoot可以对正在运行的项目提供监控。
6.无代码生成和xml配置
SpringBoot不需要任何xml配置即可实现Spring的所有配置。
五.SpringBoot怎么样
介绍了一大堆,那SpringBoot的开箱即用是怎么体现的呢。
SpringBoot官方推荐的构建应用的方式是使用SpringInitializr,直接在网页上选择好构建工具、语言、SpringBoot版本,填好自己的项目名和初始依赖,然后点Generate按钮,就能下载一个构建好的工程的zip包,只需要把这个包解压之后导入IDE就可以了。
这已经是一个包含依赖的、完整的、可独立运行的springboot应用了!你所需要做的就是往里面填充自己的业务代码!
当然,如果能直接使用IDE来进行上述操作可以让这个过程变得更顺滑。如果你使用的是IDEA商业版的话,新建工程的时候直接有Spring的选项;如果是IDEA社区版的话,可以安装SpringAssistant这个插件可以实现同样的功能。它们的原理是帮你把连接SpringInitializr并下载解压这个过程自动化了,所以只需要保持网络畅通就行了。
那如果要用原生的springMVC来实现这个事情就复杂了,可以看看右边我大概罗列的这些步骤,当时学的时候让我我非常头疼。要单独安装Tomcat,安装的过程中要注意版本和当前的spring版本是否兼容,手动引入spring各个模块的依赖。pom.xml就不说了,maven工程都要用到,然后还有web.xml-用来配置servlet、拦截规则、字符编码器等等,applicationContext.xml,springmvc.xml等一大堆xml文件……
这个过程对初学者非常不友好,记忆这些步骤和配置文件能让人崩溃,xml这种表达方式又不是很直观。这些东西称为脚手架,在小公司里面会搭建这些东西就可以算半个师傅了,小弟们就可以在搭好的架子里面写业务代码了。
再聊回微服务,试想一下,如果我们要跟上时代的步伐,使用微服务去开发软件,每个功能模块都部署成一个单独的服务,这个时候我们再使用纯粹的Spring去开发,每开发一个服务都需要重复的搭建项目骨架,然后编写各种配置文件,几十几百个服务加起来,这部分工作量是很大的,这还不算业务代码的开发时间。这种时候就是SpringBoot发挥它开箱即用的特质的时候了。然后多个微服务之间再通过Spring全家桶里面的SpringCloud进行管理,比如服务注册、服务发现等等。所以我们现在说SpringBoot是Java企业级开发的一站式解决方案。
六:总结
SpringBoot的设计初衷是解决Spring各版本配置工作过于繁重的问题,简化初始搭建流程、降低开发难度,使开发人员只需要专注应用程序的功能和业务逻辑实现,而不用在配置上花费太多时间。
SpringBoot使用“默认大于配置”的理念,提供了很多已经集成好的方案,以便程序员在开发应用程序时能做到零配置或极简配置。同时,为了不失灵活性,它也支持自定义操作。
SpringBoot内置了50多种starter,以便快速配置和使用。比如,要使用Email服务,只需要添加"spring-boot-starter-mail"依赖,然后直接调用JavaMailSender接口发送邮件。
SpringBoot可以看作是Spring框架的扩展和自动化,它消除了在Spring中需要进行的XML(ExtensibleMarkupLanguage)文件配置,使得开发变得更快、更高效、更自动化。
SpringBoot帮我们省去了烦琐的配置工作,开发人员只需要专注业务逻辑开发即可。
用一句话来说明:SpringBoot是Spring框架的扩展和自动化。
七:SpringBoot和Spring的关系
不是:从马车到汽车那种交通出行的颠覆,从燃油车到纯电动车那种能源利用的变革,从人工驾驶到AI智能那种驾驶方式的升级。总之,不是产品的升级换代,不是谁要替换谁。
而是:汽车从手动挡变成自动挡,然后增加无钥匙进入、一键启动、发动机自动起停、自动泊车、定速巡航...等功能。越来越多新上市的车型开始标配上面这些新技术,让你开车更省心更轻松,把更多的注意力放在驾驶上。
八:Spring和SpringBoot区别
————————————————
版权声明:本文为CSDN博主「林在闪闪发光」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: