00:00
好,那么先来看一下spring与springt它们之间的区别和联系,而且我们要学好boot,我也应该对spring的整个生态圈有所了解。那大家之前或多或少的已经学过了spring非常多的功能,比如我们用来做容器的LC,还有我们说做切面的LP,以及我们用spring mvc来进行开发一个web应用,这些呢,其实都是我们说的spring framework,也就是我们spring框架给我们带来的基本功能,但是整个SPA到底能做什么?我们可以来参照官网的解释,我们来到官方网址spring.IO,官网呢是这么来说的,What spring can do,首先第一个叫micro service,就是我们说的微服开发,也就是说我们现在随便开发一个应用,这个应用呢,由于功能模块众多,我们未来都可能会成长为一个大型应用,如果我们将所有的模块代码全写在一个项目里边,这样不合适,我们应该把这些模块拆分成一个一个,我们将整个应用的所有功能拆分成一个一个微小的功能模块,每一个微小的功能模块呢,我们称为一个微服务,那我们的spring就可以快速的帮我们创建和开发一个微服。
01:15
包括我们spring也可以来做reactive,也就是响应式编程,它呢是基于我们这个异步非阻塞的方式,我们可以通过整个应用之间我们构建一个异步数据流的方式,那这个异步数据流呢,允许我们占用少量的线程服务器的少量线程资源,包括我们少量的这个CPU或者内存资源,它呢就可以帮我们构建一个高吞吐量的这个应用。所以呢,我们SSPA也可以来做我们这个响应式开发,包括我们说的cloud,我们spring可以来做分布式云开发,那我们未来将一个大型应用全部拆分成这些微小模块以后,就会产生我们分布式应用,那我们spring呢,就有相关的解决方案,Spring cloud大家也可以去来看上硅谷我们周阳老师讲解的spring cloud,包括大家最常用的就是spring,用来做web开发,我们使用spring mvc来开发一个web应用,我们发请求返回监算数据,或者发请求给它详细页面。这都是我们。
02:15
的spring框架,我们带来的基本功能,包括spring现在也能适应我们现在非常流行的一个新概念叫service list,就是无服务开发。所谓的无服务就是我们简单来说就是我们的fast,也就是我们说的function and a service函数及服务,如果我们说的函数式服务我们是不是可以来做,我们简单快速的开发一个函数式服务,我们无需购买任何的服务器,我们以前购买要几核几G的这些大量服务器,浪费资源,闲的时候我们纯粹就闲置在那儿,我们直接把这个含数式服务,我们上到云平台,它到底占用多少资源,我们可以按量计费,实时计费,那我们就可以节省很多的这个人力财力,包括物理等等。这是我们说的service,我们spring也可以来做,以及我们说的event drive,我们事件驱动,所以可以将我们整个的这个分布式系统来构建出一个实时的我们称为stream data,基于事件的方式构建一个我们称为。
03:15
实时的数据流,那我们有了这个实时数据流呢,我们就可以通过响应式的方式,让我们整个系统呢,占用少量的资源就能完成高吞吐量的业务,包括我们spring也可以用来做什么,但我们说的批处理业务等等等等,其实的功能不局限于这么多,这些功能都是一个spring framework这个框架来做的事情吗?其实不是,我们来点开projects,我们会发现整个spring的生态圈啊,其实是非常大的,它有非常多的框架,我们以前学过的spring,我们称为spring framework,所以呢,我们现在来理解spring呢,从宏观上来说,它指的是我们spring帮我们构建的整个生态圈,他们的整个生态圈合作起来,就能帮我们来干这么多的事情,但没有一一列举出来,这都是它的几大特色,那我们。
04:08
微观来说,那我们的spring就是我们说的spring框架,那宏观呢,就是我们的整个生态圈,那我们可以来看一下我们spring的整个项目列表。其实它的生态圈很庞大,我们每一个这一块列出来的都是一套解决方案,比如我们spring boot,我们将要学的spring boot,我未来微服务开发我们就使用它,我们以前学的spring就是spring framework来点进来,我们spring framework里边有我们学过的一些核心机制up,还有我们的Di依赖注入IC等等,包括有我们的spring m VC这些web开发,这都是我们以前学的基础,包括spring用来解决数据访问的,无论你是MYS这啊关系性数据库,还是我们red这些非关系型数据库等等等等,我们spring呢,都有整套的解决方案,几乎囊括了市面上我们所有的这个数据访问技术。包括我们spring呢,有spring cloud,我们这个呃框架他呢来帮我们来解决我们分布式下的所有问题,以及我们有spring security,对吧,我们来解决我们整个应用的安全控制问题,还有spring session来解决我们分布式下我们各种session的存储共享问题等等等等等等,我们会看到spring有一系列的框架来进行我们整个生态圈的一系列解决方案,批处理的,来做消息队列的,包括还有安卓开发的,我们移动设备开发的,还有我们来做命令行程序的等等等等,所以呢,我们per整个基于这些项目帮我们构建出了一个大型生态圈,这个生态圈呢,覆盖了我们整个后来我们服务开发的基本上所有的这个功能模块的web数据访问,安全控制,分布式消息服务,移动开发批处理等等等等等等等,所以呢,我们整个的这个spring生态,只要我们全部掌握,那可以说大家。
06:00
就是啊,所向披靡对吧,想要开发什么东西我们都不会不会害怕,但是呢,回过头我们又来想,我们如果要掌握spring的这么多的技术,这就类似于像一个什么,我呢,现在想要一台电脑,我掌握了造CPU,这是核心,然后呢,我又掌握了造内存,哎,比如我们spring cloud,我又掌握了造硬盘,我还掌握了比如我们这个造主板,但是呢,我现在就是要一台电脑,那我们把这些怎么东西,怎么能快速的组装起来,这又是一个问题。所以呢,Spring的整个生态圈的整合使用,在我们以前大家可能陷入过我们的一个,我们称为叫配置地域,对吧,大家以前学spring框架的时候,我们整合一个马AB,或者整合一个spring mvc,我们要写一大堆一大堆的配置,你光整合一个MVC就这么一堆,你更别说整合spring的其他整套解决方案。所以呢,你会发现我们在。
07:00
应用开发的时候,应用的功能一多一大,我们会带来非常大的这个配置麻烦,那接下来有谁能简化这一个问题呢?那就是spring boot,所以这就是我们spring boot生来的意义,那spring boot呢,其实它是一个高层框架,哎,我们可以来说它是一个高层框架,它的底层是spring framework,就类似于我们这么来说,Spring这是一个框架,它的底层你要来说这就是Java,对吧?那我们spring boot它的底层其实是spring框架,所以呢,我们spring boot却可以帮我们整合spring的整个系列技术站,我们来完成我们的整个应用开发,但它整合起来以后呢,我们以后就免于写那么多那么繁重的一些配置了,我们就专心于我们的业务逻辑,所以这就像我们现在我们要电脑,我们不要手动自己组装这么一堆,我们直接找惠普,比如找戴尔,我们买一个品牌机。
08:00
哎,这就行了,我们无需自己掌握各种组装技术,这就是我们spring boot出生的意义,包括呢,我们SPRING5因为有了重大升级,所以我们spring boot2版本跟一版本的这个使用又有了一些不一样,那我们SPRING5的整个重大升级,首先第一个是引入了响应式编程,从它的底层开始,我们不是无论是访问数据库的这些方案,我们访问my circle的还是我们这些no circle的,比如red,还是我们无论是访问数据库还是web开发,还是安全,呃开发还是我们来呃进行一些兼容select开发,那我们呢,现在STEM boot2引入了两套方案,第一套是我们so技术站,这个技术站呢,就是我们以前最原生的技术站,我们spring spring mvc那一套,那第二套方案呢,就是我们从数据访问这一层开始,我们就进入,我们通过构建异步数据流的方式来进行响应式开发。我们响应式开发我们的。
09:00
啊,数据访问,响应式开发我们的这个web应用,包括响应式开发我们的这个security安全应用等等,最终构建出我们一个响应式,啊我们应用这个应用呢,可以用我们少量的线程,呃,占用少量的资源就能处理我们看我们说的这个massive numbers of concurrent connections就能处理我们整个大量的并发,所以呢,我们的整个课程设计也是分为两季,第一季其实就是我们来掌握整个select这个技术站,第二级就是来掌握我们reactive这个技术站,这SPRING5给我们升级的第一个特性,那第二个就是因为我们五啊,整个内部源码都是这基于JDK8,我们JAVA8来进行实现的,那JAVA8里边因为更新了非常多重大的特性,比如最让人。最让人感觉变化大的一个特性就是我们说的什么啊,接口的默认实现,哎,我们接口呢,现在有了默认实现义务,默认实现以后呢,其实我们以前的好多设计模式一,比如我们之前有一个适配器模式,我现在呢有一个接口A,它呢有1235个方法,然后呢,我有一个子类B,它呢只想实现一二方法,而还有一个子类C,它只想实现四五方法,也就是说呢,对于BC来说三方法,对于B来说345它是不用写的,但如果我们让B来实现A接口,我们345就算不用写,我们空方法都得放在这,我们C来实现A接口,我们123的空方法也得放在这儿,那spring呢,它在底层有非常多的这个接口设计,它的接口呢,可能有一两百个方法,我们要制定一些组件的时候,难道我们全部要把这一两百个空方法全部放在这吗?所以呢?
10:52
那spring在底层会经常大量使用一种设计模式,叫什么适配器,我呢这有一个适配器,比如我们说的DA,这个适配器呢,它把A的这五个方法全部一进行默认实现,实现成为一个空方法,然后呢,你B说要一二了,你B来继承适配器只实现一二,C来继承适配器只来重写四五,哎,我们继承的话,这就叫重写了,不叫实现,对吧,重写一二和重写四五,但是呢,我们JAVA81出来,有了接口的默认实现以后,这个是配器是不是就没用了,我们直接在接口上12345都给一个默认实现,然后呢,B想要重写哪个就重写哪个就行了。所以呢,我们既因为Java底层的这个变化,我们SPRING5有了,呃,很多源码内部的一些设计及架构设计的变化,我们这些整个里边的源码也都不一样,我们的课程呢,后来也会将这些源码我们来重新再来走一遍。
11:50
那所以这是呢,是我们所了解的spring的整个生态,那这个生态能帮我们来做很多事情,那既然能做很多事情,我们为什么要用spring boot,那这就是我们回归到之前我们说的,包括官方对于spring boot的解释是这样子的,那为什么要用boot呢?他说springt make it easy to create,就说把什么事情变得简单,就创建一个独立的应用,生产级别的基于spring的应用使我们变得简单了,我们要做的就是把这个应用运行起来就行,我们几乎不用关心我们以前spring要整合各种框架的各种配置,那我们直接使用spring boot就能将它们快速的使用起来,但是呢,Spring boot的底层又是什么呢?它其实就是整合这么一系列技术站的一个框架,所以呢,我们来总结来说,Boot,它的这个作用就是帮我们能快速的创建出生产级别的spring应用,让我们以后用spring开发变得简单。
12:51
那我们BOO的优点呢,也有非常多,比如我们官方在这儿给我们举了非常多的这个特性特例,老师呢也把这个拿过来,我们挨个逐行翻译一下。spring boot的优点,第一个是我们能创建一个独立的spring应用,就是你用spring boot也能创建出spring应用,以后呢,你就别创建原生的spring应用,而且spring配置文件这么一大堆了,如果你的公司现在正式用原生的spring来进行开发,你完全替换成spring boot没有任何问题,不仅不会带来功能上的减少,还来还会带来功能上的增强。
13:27
第二个我们这个SP boot呢,它使用这个我们称为叫嵌入式的embedded,就是我们嵌入式的这个内部容器,我们嵌入式的tomcat阶梯或者on top,这些都是我们的solid容器,因为我们以前要开发一个web应用,比如我们以前spring spring l VC,我们要开发一个web应用,我们这个应用呢,最后最终会被打成一个什么wa包,这个wa包呢,最终会部署到我们tomcat上,那我们的目标环境还得装,Tom KT还得配,这挺麻烦的。而用我们smart boot来进行应用开发,你目标环境即使没有tomcat也没关系,我们创建的这个应用,它里边已经带了服务器了,你都不用安装,给你都集成了,就像我们买品牌机,已经给你把操作系统都装上了,你也不用回去装操作系统了,那你直接运行就行,这就是我们说的spring boot第二大优点,第三大优点,Provided提供我们的这些自动的这些依赖,帮我们来。
14:27
进行一些项目构建期间的这个配置,简化我们这个构建配置,这个自动依赖呢,在spring BOO里边成为start,这又是解决我们以前的什么痛点,大家想想啊,我们以前来开发spring应用的时候,比如我们要整合spring spring mvc my1大堆,我们需要导一大堆的炸包,而且每一个炸包的版本呢,我们还得控好,控制好,万一有一哪个版本出现问题,那我们整个应用呢,可能都难以跑起来。而我们现在有了spring boot,它帮我们直接提供好了这些starter starter呢,我们称为启动器,比如你现在想要开发web应用,你不需要导一大堆的这个JA包,你只需要导入一个依赖,就是我们称为web场景web start,这样的话呢,我们开发web场景用到的所有依赖,Spring mvc这一大堆,接处理这一大堆,包括spring核心容器这一大堆,它全部给我们导入进来,而且给我们把版本控制好,保证这些版本之间是能够协同。
15:27
呃,协作的不会出现各种版本问题,所以呢,这就是我们boot也简化了我们这个依赖配置,你只需要导入一个场景,我们整个完整开发就够用了。还有第。第四大优点,我们SP呢也可以automatically把我们能自动配置我们SP以及第三方的这个功能,这就是我们之前一直说的激动人心的功能,我们spring boot,我们用springt开发了,我们再也不要像我们spring以前我们要整合MVC嘛么,要写一大堆配置,每个配置你还得记清楚,有些同学呢,把这些配置可能直接呢保存到自己电脑上,每次要开发项目啥给上面粘,这都太麻烦,而有了boot呢,这些东西其实既然你都能粘这些,其实是不是都是一个固定化配置,哎,基本上是固定化配置,可能只需要有额外的一个小修改,那T呢,就将这些都给帮你全部自动配置好,你呢,用了spring boot以后,你上手工程创建好,直接开发你的业务逻辑,什么都不用管,所以呢,它能自动配置好SP,包括我们的一些第三方功能,包括你想要连red,连my circle,那几乎呢,你用了spring boot以后,你只需要告诉人家red my。
16:40
德扣的数据库地址账号密码啥的,剩下的你都不用配置,不用配置数据源怎么做,什么东西怎么做,直接我们就能开发,所以这也是spring boot的第一大优点,还有spring boot能为我们提供生产级别的这个监控,健康检查以及外部化配置功能,我们一个应用要上线以后,你不能着只着眼于开发啊,那对我们运维来说,你的这个应用现在啊,消耗了多大CPU内存,包括应用是否健康啊,包括我们要修改这些应用的配置,让我们这个运维该怎么改,不可能把我们这个。
17:16
这个应用我们再来打开我们这个idea的这一大堆代码,我们只改一个小配置,然后我们在这改完,你用再打包,再重新部署,所以呢,整个这个呢,Boot都帮我们来解决,你的这个应用原生呢,就能自带生产级别的监控和健康检查功能,你几乎不要做任何配置,你的这个应用,我们的这个运维人员就能把你这个应用能监控到你应用的所有的这个指标,你以及你应用内部的信息,包括你应用的这个健康信息,而且还有生产级别的我们的外部化配置,那我们要修改我们这个应用的配置了,我们无需打开源代码,在源代码处位置再来修改,只需要告诉运维,哎,你要修改什么了,你就在这个外部创建一个什么配置文件,你在这把配置一改,它这个应用呢,就自动应用到,所以呢,这也是我们spring boot的优点,如果我们以前用SP,我们来开发原生应用,你想要做到这些,其实是不是很难啊,包括我们整个的这些功能,自动化配置。
18:16
置包括这些,这特别是这些自动化配置,它呢是完全无代码生成,无需编写插马尔的,不是说我们这些自动化配置,我们要整合马贝斯之前,然后人家呢,把这些插麦尔给你生成出来,它呢其实没有任何的代码生成,就是基于spring底层的这些自动装配功能,还有我们的条件啊,注入功能,我们后来都会说这些功能等等等等,我们直接呢,就会基于各种场景你。Spring boot发现,诶,你这是开发一个web应用了,就把你帮你把这个web应用的所有东西都配置好,你开发数据库应用了,帮你把数据库所有的东西都配置好,不会额外生成任何任何代码,哎,也就是说你原生应用有多少代码不会出现,我这个应用一部署,天呐,它给我生成一大堆乱七八糟的代码,又多占了好多资源,没有任何的代码生成,我们也抛弃了以前spring编写大量这些插配置的方式,这都是spring的优点,其实听着这些优点我们还是非常诱人的,我们也应该去来积极的来使用springb。
19:22
如果你的公司还在用原生的spring,我们非常推荐你转换为spring boot。那么现在来说一句话总结,Spring boot是什么?其实呢,它就是整合SP整个生态圈的一个一站式框架,以后你想要使用整个spring生态圈来开发你的整个应用了,你只需要从spring boot开始就行了,所以什么叫boot呢?就叫开始,对吧?我们开机boot,我们的启动啊,引导过程,所以呢,我们要使用整个spring生态圈的所有功能,我们只需要从spring boot开始就行了,这是第一个,第二个spring boot呢,是来简化我们应用整个spring。
20:08
Spring技术站的一个快速开发的脚手架。什么叫脚手架呢?帮我们搭建好所有的东西,我们只需要开发自己的业务就行了,哎,所有的基础功能我们都有的,这就是一个脚手架,然后呢,Boot大家说有没有缺点呢?其实也有对吧?Boot第一大缺点啊,人称版本低,它迭代更新特别快,你经常要更关注它的一些啊小变化,但是其实呢,这个应该不能归纳为缺点,它应该是一个优点,它能迭代升级快,说明它的社区活跃,它的这个bug少对吧?第二个咱们这个封装太深,内部原理复杂,不容易精通。大家学spring boot呢,会发现,因为spring boot它的底层是spring框架,你对spring有多精通,你可能对spring boot才会有多精通,所以呢,它整个层层封装,到最后呢,我们要剖析内部原理还是有一点复杂的,但是无论怎么也不应该阻挡我们去来学习spring boot的整个脚步,那么下一刻呢,就来开始来学习这个spring boot。
我来说两句