00:00
好,那下面呢,我们来说一下这个spring家族,那我们刚才在介绍的概述问题的时候,咱们就说过,Spring本身呢,它就是一个非常庞大的家族,其中呢有实现各种功能的框架组成,那下面呢,我们就可以来看一下它的官方网站,然后咱们来看一下上面有一个project,咱们来选择view or projects,大家来看一下里面的内容呢,非常的多啊,好,然后咱们先来看一下这个内容叫做spring framework啊,Framework就是框架的意思,它叫做spring的基础框架,基础设施,然后我们当前这里面所有的跟spring相关的一些框架呢,它都是以spring framework为基础的,那所以说我们现在咱们所学习的spring呢,其实就是spring framework里面的内容,那这个呢,咱们一会呢会具体的去讲解好,然后还有呢,Spring boot这个呢,也是我们以后用的最多的一个框架。它可以帮助我们更快速的。
01:00
更方便的,然后去开发一个企业级项目,好,然后下面还有spring data,就比如说咱们的一些非关系型数据库的一些操作,咱们就可以通过这个框架来实现,还有呢,Spring cloud分布式架构,对吧?Spring spring的安全框架,然后spring session来对我们当前的session会话对象的一个统一管理。好,大家注意,这里面呢,咱们会以后呢,好多的框架咱们都会慢慢的去学到,那当然呢,这个spring框架在我们去开发的过程中也是至关重要的啊,比如说我们现在目前市场上最流行的分布式架构,我们就是用spring cloud spring boot来实现的,OK,好,那下面呢,那我们来看一下这个内容叫spring framework,因为刚才跟大家说过,我们以后咱们现在所学习的呢,然后就是spring framework里面的一些内容,而我们刚才所跟大家提到的一些spring的一些扩展性的一些框架,然后都是以spring framework为基础的,好,那大家来看一下它是什么?Spring基础框架可以视为spring的基础设施,基本上任何其他spring项目呢,都是以spring framework为基础的,那spring framework它有什么样的一个特性呢?那咱们先来看这个内容啊,就spring framework它包含有哪些模块,它一共包含。
02:24
还有五大功能模块,首先第一个就是core container,什么意思叫做核心容器,其实呢,它指的就是我们spring中的IOC这个核心内容,然后下面呢,有a op,然后aspects,然后这个呢,指的是咱们spring中的第二个核心,然后叫做a opoc,面向切面编程,还有第三个叫做testing,然后这是什么?就是spring对咱们的几unit来进行的整合,然后再往下有个datases啊,然后in integ integration,然后这个呢叫做数据访问啊,就比如说我们在GDB,咱们在spring里面呢,它也提供了对GDBC的封装,然后咱们在之后咱们讲到这个a op的时候,然后因为我们要讲a op的一个重要应用,叫做声明式事物。
03:14
好,到时候呢。咱们就需要通过JDBC来访问数据库,操作数据库,那我们就会把spring里面的一个封装的GDBC的一个功能,然后给大家来讲解一下,好,然后再往下就是咱们的spring VC,对吧?咱们spring框架讲完之后,下一个内容,下一个框架就是spring VC框架啊好,那我们现在呢,咱们呢已经了解了spring framework的五大功能模块,那下面呢,我们来看一下spring framework的一个特性。首先呢非侵入式,那非侵入式呢,之前也跟大家说过,就是它对我们当前咱们的这一个原生的技术呢,是零污染的,它是不造成任何影响的,那所以说我们完全可以在使用spring from work的功能的同时,咱们也可以来使用原生的技术来实现功能,OK,然后在这呢,有一个叫做控制反转,大家注意这个是我们spring里面的两大核心之一,叫做IOC啊叫做IOC。
04:14
好,叫做inversion of control啊,是我们反转资源获取的方式,那之前呢,咱们也给大家简单的介绍过,其实就是把我们当前咱们的对象的控制权,然后反转,反转给了程序本身,其实就是我们资源获取的方向进行了反转,比如说我们之前咱们要使用某个对象,那我们是需要自己来创建这个对象,去利用一个对象来使用,而我们现在咱们有了spring之后,那我们就把对象的创建权,对象的控制权交给了程序,也就是交给了spring来管理,那就把我们当前主动去获取对象,然后变成了我们被动的去接受我们框架的一个注入,其实就是框架为我们提供这个对象,那所以说这个时候大家想想,那我们spring里面,咱们的对象是配置在哪的,是配置在我们的叉L文件中的,那所以我们当前呢,然后咱们的配置文件中配置的是什么对象,那我也就是说我们当前死不我们。
05:14
提供的就是什么对象,那这个时候就可以来降低咱们程序的耦合性,来降低我们对象与对象之间的依赖关系。然后由我们原来主动去使用某个对象,而变成了有框架为我们提供某个对象,OK啊,行。再往下呢,叫做面向切面编程,然后这个是咱们spring里面的。两大核心之一,第二个核心叫做面向切面编程,叫做a op,大家注意这个东西它是干什么的啊,大家要知道它什么叫面向切面,它跟我们的面向对象他们之间的关系,面向切面呢,是对面向对象做出的补充,就比如说咱们之前呢,在介绍spring概述的时候,跟大家说的一样,对吧?面向对象是纵向继承机,就是对是纵向继承机制,然后我们当前能够封装的是一段连续执行的代码,而我们当前呢,就像是咱们的事务管理,它不是一段连续执行的代码,那这个时候我们要想进行封装面向对象咱们是实现不了的,那咱们就要干嘛呢?来使用面向切面,面向切面叫做横向抽取,那所以说我们就可以把咱们的一些代码,比如说事务管理的代码,把它给横向抽取出来,抽取到我们的一个切面中,然后再不改变我们源代码的基础上,把我们当前实现事务管理的这个切面作用。
06:38
用于我们当前需要被事务管理的方法中,然后这个时候大家想想,那不就是在不修改源代码的基础上去增强代码的功能,哎,这样的啊,好,再往下呢,容器。还有大家注意,那什么叫容器,那我们见过普通的容器,就比如说咱们生活中,咱们有这个杯子对吧?然后咱们有这个茶壶,它都是一个容器,但是在我们的程序里面呢,咱们的容器呢,大家注意,它是一个非常复杂的一个对象,然后这个容器就比如说我们之前在学习tomcat的时候,Tomcat就有两个功能,第一个功能是solvelet容器,第二个功能是什么叫做we部服务器,对吧?那solvelet容器它就是一个非常复杂的容器,它可以帮助我们干什么,可以帮助我们来管理咱们的solvele,同时来管理solvele的生命周期,也就是说我们当前呢,它帮助我们管理了solvele之后,Solvele里面的各个方法的调用,包括solve的创建、初始化、实例化,到当前solve各个方法的调用都是我们自己去调用的吗?不是,都是由容器帮助我们来管理的,OK吧?那这个时候咱们还需不需要来管它所?
07:51
管理的对象是怎么被创建的,什么时候被创建的,然后它的方法在什么时候被调用的,是如何被调用的,咱们还需要去管吗?不需要,所以说这个时候咱们的组件创建过程中的大量的细节,然后就会被屏蔽,那所以说我们只需要来关心什么,我们该怎么来实现我们当前的这个功能就可以啊好,那spring的IOC呢,它同样也是一个容器,然后这个容器里面就包含了我们当前咱们交给spring所管理的一些对象,那当然呢,它不单能够帮助我们来存储这些对象,它也能够帮助我们来管理。什么叫管理?就比如说咱们刚才说的solve容器,它是能够帮助我们来管理这些对象的完整的生命周期的,那所以说这些对象咱们还需要自己去管理吗?不需要,哎,其实咱们的IOC的底层啊,它用的就是一个工厂模式,就是把我们当前创建对象的完整的过程进行了屏蔽,那我们只需要需要那。
08:51
我们只需要来获取这个对象,来使用这个对象就行,至于对象如何创建的,咱们并不需要去管啊,好,再往下。叫做组件化。
09:01
那什么叫做组件化呢?大家注意,我们当前呢,咱们交给IOC容器所管理的对象,然后在IOC容器中就叫做组件,然后我们原来咱们需要手动的去管理我们各个对象之间的关系,但是当我们把我们的这些对象交给了IOC容器来管理之后,那我们现在来管理的就是各个组件之间的关系,那咱们就那spring就会把咱们这些关系呢进行简单化,把我们的这个功能啊,然后把我们这些由它所管理的组件组合起来,去完成一个完整的功能,这个大家注意啊,好,再往下还有一个叫做声明式,那声明式其实呀,什么叫做声明式,声明式其实是跟咱们的编程式,然后他们两个相对应的,我们学习了框架之后啊,大家一定要知道什么叫声明式编程式就是我想干什么,那这个过程就需要我自己来实现,而声明式就是咱们框架里面最大的一个特点,就是说我要干什么。
10:01
我需要自己去实现吗?不需要,我只需要来告诉我的框架,我要实现什么功能,具体的功能由谁来实现呢?由我们当前的框架来实现,就比如说咱们spring中的IOC干什么的,来管理对象的,那所以咱们现在呢,把对象交给spring之后,对象如何来创建,对象中的属性如何来赋值,我们需要去管理吗?不需要,完全都是由框架帮助我们实现的。还有就是我们在学习了a op之后,咱们会学习一个声明式事物,对吧?那之前我们要实现事物的话,那我们哪一个方法需要实现事物管理,那我们就要把这个事物添加到我们当前的方法中,但是我们现在有了声明式事物之后,我只要告诉框架我的哪个方法需要被事物管理,那它就会自动的在我们当前的方法上添加事物相关的代码。好,大家注意,这就是声明式,跟咱们的编程是相对应,编程是我要干什么,具体的功能由我自己去实现,而声明式是我要告诉框架,我要做,我要实现什么,具体的实现过程有框架帮助我们实现,OK啊。
11:12
好,那最后一个呢,叫做一站式,那什么叫做一站式呢?一站式大家注意就是说我们spring中呢,它有两大核心,叫做IOC和A,所以说我们可以利用spring的两大核心,然后去整合咱们的第三方框架,好然后就像是咱们讲的SSM一样,对吧,然后这个时候我们就是拿着spring去整合买be。当然呢,这个有同老师他不还整合了spring VC的呢,大家大家注意啊,那其实spring跟spring VC本来就是同源的,它本来就是属于同一个家族的,没有什么说spring去整合spring VC或不整合的问题,当然这个问题咱们在SSM里面咱们是需要去考虑的,但是呢,大家注意,咱们在这的第三方框架,咱们说的是跟我们的spring不同源的一些框架,就比如说买be,那咱们在SSM整合中,就是利用咱们的spring中的两大核心,然后去整合我们的第三方框架,买be提的OK吧,好,那当然咱们的spring它本身也是一个非常庞大的家族,那我们哪怕咱们不整合第三方框架,那我们spring它本身的家族里面也有实现各种功能的框架,就比如说我们在讲a up的时候,咱们会给大家学习一个叫做数据访问的框架,就是咱们在这个地方啊,大家注意叫做spring g d bc。
12:35
那这个时候咱们哪怕不整合买be,我仍然也可以使用spring本身的一个框架叫spring JD bc,然后来实现对数据库中数据的一个访问,一个操作。好,这是咱们的spring的一个一站式的一个特性啊,好,那这些特性呢,咱们是在学习之前给大家去讲的,就像是我们刚才在讲概述的时候的一个问题,这些特性我们现在先了解,等到我们学完spring之后,大家再回来去验证就可以啊。
我来说两句