SpringBoot成长记1:你真的懂SpringBoot吗?
众所周知,Spring是java中应用最为广泛的框架,而近些年来SpringBoot的兴起,让Spring的应用和便利更上一层楼。
今天我们第一节,就来认识下SpringBoot给我带来什么,它的核心特点是哪些。
认识一个新技术的时候,通常是从一个入门的HelloWorld开始,之后阅读它的一些入门文档和书籍、视频,从而掌握它的基本使用。
而SpringBoot已经广为java工程师所周知了,但是它核心的特点,不同人的认识还是有所不同。今天,我们就从官网出发,看看官方是定义它的特点和优势的。
最后我结合自己的思考,总结下自己的理解。
从官网开始认识SpringBoot
从官方https://spring.io/projects 我们可以看到如下对SpringBoot的介绍:
SpringBoot介绍:“从构建Spring应用程序出发,让您尽可能快的启动运行Spring应用程序。” 可以看到SpringBoot本质是为了更好的、更便利的使用Spring,这个是它诞生的初衷。
这里我要额外说一点的是,程序员写代码的时候,思想远远比方法重要。所以我们理解代码最关键的是理解它的思想,而不是仅仅简单的使用它。框架无非是解决了一系列场景问题的技术方案而已,有各自的适用场景。这个就是思想,才是我们要掌握的,而不是说我掌握了多少个框架。
回归正题,我们通过官方,之所以更多的是要看看它创作SpringBoot的目的,SpringBoot的框架解决了什么问题,特点是什么。之后站在一定高度去理解SpringBoot,才能更好地学习它。这个是我想要教给大家的方法,让我们继续来看。
官方如何介绍SpringBoot提供了哪些功能?
刚才通过官方的介绍,你知道了Springboot的是为了更好的便利的使用Spring,创建应用程序。那它提供了什么功能,让我们更好的使用Spring呢?
这个当然是作者给出的回答最好了。通常你可以通过一个技术的官方文档来了解它。SpringBoot的官方文档,编写的还是非常好的。你可以参考:https://docs.spring.io/spring-boot/docs/current/reference/html/
官方文档是非常详细的,就像一本书一样,我们怎么找到我们想要的知识点呢?其实思路很简单,找下目录,就和我们看书一样,或者看课程目录一样,先大体过一下目录,就知道自己想要的只是在哪里了。先脉络后细节的思想是我一直在强调的。
比如我么你想要找SpringBoot核心提供哪些功能。首先在overview中,就是介绍它的大体功能
而在目录中我们找到了,两个章节可能和介绍功能有关,如下图:
你可以都打开看看,首先是Documentation Overview,里面的确有介绍SpringBoot功能特点,如下图所示:
这个Documentation Overview,可以看出来,主要是对SpringBoot 功能一个是概要描述,其中第4点中,介绍了Core Featues,也就是核心功能。
这个就是我们想找的,官方理解。核心功能中主要有:SpringApplication | External Configuration | Profiles | Logging。其次还有MVC | Embedded Containers等。
参考文档中另一链接,是对SpringBoot功能一个特别详细的描述。可以看到,左边目录有SpringApplication的介绍,Profiles、Logging等各个功能介绍。
通过上面的overview和目录中的两篇文档对SpringBoot 功能的介绍,其实已经介绍了SpringBoot的功能了。你需要大体对官方给SpringBoot定义的功能,可以概括如下:
1)官方核心定义了一个SpringApplication的概念,实现web应用的新流程,支持自己内嵌了一个web容器
2)官方给出了可扩展配置,便捷的和Spring整合各种技术
3)提供了各种便捷的功能,如Profile多环境配置,Logging灵活的日志组件插拔、各种技术的便捷使用等等。
我们通过去官方文档寻找SpringBoot核心功能,教给大家了很重的一个思想,先脉络后细节的思想。这个非常关键,这个思想之后我们会一直用到的。
自己对SpringBoot功能的思考
有了上面的官方文档的一些介绍,下面我们来结合自己的理解,思考下SpringBoot的功能到底给我们带来了什么。
1、SpringBoot定义了新的web应用启动流程
首先第一点最重要就是,引入了一个SpringApplication的概念,它这个概念实际是定义了一套新的web应用启动流程。
你可以回想一下,在没有SpringBoot的时候,我们开发和启动web应用时,主要流程如下:
1)通过Spring先整合好一些web框架如SpringMVC/Struts2,本质是整合DistpatherServelt/Listener到Tomcat的启动流程中
2)通过构建工具如Maven将开发好的项目打成一个War包,丢入到Tomcat的webApp目录
3)启动Tomcat,接受http、rpc等请求交给Spring创建的各种bean来处理请求。
整体流程如下图所示:
而使用了SpringBoot,它引入了一个SpringApplication的概念,定义了一套新的启动流程,主要有如下几步
1、定以main函数入口
2、自动装配外部配置 ,如starter等
3、创建Spring IOC容器
4、启动tomcat web容器
新定义的web应用启动的流程变成了如下图所示:
当然SpringBoot也支持打成war包,丢入到Tomcat中,不使用内嵌容器这个功能。但是其他的SpringBoot功能仍是很好用的,比如常说的自动装配配置。
2、SpringBoot的自动装配配置解决了Spring集成各种技术的复杂性
我们之前提到过,SpringBoot的核心思想是为了更好的、更便利的使用Spring,构建web应用。
那Spring创建应用程序,有什么痛点问题呢? 很关键的一个问题,就是Spring集成各种技术的复杂性。
你可曾记得,之前你自己刚开始学习Spring,之后自己集成SSH、SSM各种框。随着学习框架和技术越来越多,比如Mybatis、Hibernate、Struts2 、SpringMVC、Shiro、MySQL、ES、MongoDB、MQ等等。几乎每学习使用一个其他框架或者技术,自己就要整合一大堆配置。随着技术应用越多,这个是很令人头疼的问题。
之前我们都是自己来整合这些框架,有了SpringBoot之后,我们可以通过自动起步依赖的starter,自动装配配置,来解决各种框架整合带来的复杂、重复的配置。如下图所示:
有了SpringBoot之后,可以通过官方或者自定义一些starter起步自动依赖,来实现各种技术的自动装配配置,大大减少了各种技术的整合和使用成本。
当然,使用SpringBoot这个功能,你一定要对自动装配配置的原理有清晰的理解和认识,这样才能驾驭了好它,不然反而会带来更多的麻烦和问题。这个之后我们详细带大家分析SpringBoot的这些原理的,让大家更好的可以掌握SpringBoot。
3、SpringBoot提供了很多便利的功能和扩展点
在我的理解中,SpringBoot除了上述的两个特点外,剩下的就是它的一些便利的功能和扩展点了。比如官网中提到的多环境配置Profile、日志组件的可插拔Logging、各种技术的便捷整合使用等等,还有整个SpringBoot的启动过程设置了许多扩展点。如下图所示:
其实还有很多,有耐心的同学可以每天看一小节SpringBoot的官方文档去了解下,也可以跟着成长记,一起分析和成长。
当你对SpringBoot的使用、原理、甚至是源码,有着越来越多的认识后,希望每个人都可以成为SpringBoot的专家,精通SpringBoot。
小结
今天除了认识SpringBoot的功能特点,更重要的是学习了几个重要的思想。这里简单小结下。
学习到的主要知识点:
1、认识SpringBoot(如何从官网认识一个技术)
1)官方核心定义了一个SpringApplication的概念,实现web应用的新流程,支持自己内嵌了一个web容器
2)官方给出了可扩展配置,便捷的和Spring整合各种技术
3)提供了各种便捷的功能,如Profile多环境配置,Logging灵活的日志组件插拔、各种技术的便捷使用等等。
2、自己对SpringBoot功能的思考
SpringBoot定义了新的web应用启动流程、SpringBoot的自动装配配置解决了Spring集成各种技术的复杂性、SpringBoot提供了很多便利的功能和扩展点
通过如何从官网认识一个技术(SpringBoot)的功能,学习了一些思想。
学习到的关键思想:
1)对待新知识和新技术,永远要抱着思考的想法,在不断学习中反复思考。古话说的好,学而不思则罔,思而不学则殆。就是这个意思。其实程序员写代码的时候,也一样,思想远远比方法重要。所以我们自己写代码也好,理解别人代码也好。最关键的是理解它的思想,而不是仅仅简单的使用它,了解它的流程之类的。
2)先脉络后细节的思想,比如无论是阅读文档、书籍、代码、画图等等一切,都可以按照先脉络后细节的思想来。
本文由博客群发一文多发等运营工具平台 OpenWrite 发布