00:00
那行,来看我屏幕啊,我们先简单做个回顾。首先我们看一下我们API当中,我们讲的是我们讲的是哪些内容来。我们在这个塑料当中啊,我们主要介绍的是它的这个叫应力的方法。对吧,叫阴历的方法。呃,这个应力的方法呢,我们斯的生命周周期啊,我们有四个阶段实例化。那么第二个阶段叫初始化。那初始化对应的方法叫in。我们应的有两个。一个是无参的应力的方法。第二个是带一个参数的。带一个config参数的。那么为什么需要带参数的这个呢?因为带参数的这个configgu啊,我们是能够,我们是能够获取到这个configgu对象,从而能够获取到它的一些初始化参数的,是吧,同学们。哎,是这样的。来,我先把这个项目呢,我先复制一下,稍等一下啊。我先把幺七复制一份。
01:00
我放在这边,我称之为叫幺九吧。19FRUIT2.3。好,这个MVC,那么这个当中我们需要写一个。Transaction。全是action。好,稍等一下啊,我写个PROJECT20啊。幺九一会我写个基础知识啊,我写上二零好。Could it。OK,我把它重命名一下QQV。好,然后呢,我把它导入进来。这可以删掉,我们回到model,点击加号,点击import。好了,我们把这个把它加进来,应该是二零这个打开。行,他没有artifact没有关系的啊,反正我们现在只需要写笔记回到这边来。那么我们一起来看一下啊。
02:02
我们讲的第一个是关于生命周期中的初始化方法。啊叫。然后呢,以及in我们带一个con参数的是吧,同学们,我们其实有这两个方法,那么那么在我们这个in带参数的这个方法当中啊,它其实会调用调用这个无参的。他在调用无餐之前,他会给这个con赋值。我们简单看一下啊,再次来简单看一下,回到这里面。我们找到它的应力的方法。来,我们看一下,这个带参数的叫s configur。你看一下他第一句话是不是就给这个con对象赋值啊,然后我就用这个,而我们这个in的方法在下面它是空的,就是说这个空的这个in的方法将来就是留给我们去重写的吧。哎,如果我们有一些初始化的工作需要去操作的话,那么我们可以重写这个无参的应力的方法。如果我们想要去获取一些初始化的一些信息,我们可以通过get config这个方法获取到这个config对象是吧?然后我们conig对象其中有一个方法叫get in it。
03:07
啊,叫get印尼的方法,那行,我们就回到这边来。所以那这个我们就不看了啊,我们到这边再来回顾一下。啊,我们有两个。那么我们的有参数的,我们把它拷过来。放到这。啊,这是我们有参数的这个应力的方法。那么在这个应力的方法当中。我们在这个应力的方法当中,哎,他给这个con对象赋了一个值。啊,他给他赋了一个值,然后调用这个in,因此。因此。如果我们需要在初始化时。啊,执行一些操作,自定义的操作。那么我们可以重写。无餐的in的方法是吧,同学们这第一个。啊,第二个我们可以通过get configur。
04:05
Get configgu。获取。Configgu对象,或者叫获取config。啊,跟这个对象。然后呢,可以通过。我们可以通过conve点。Get in it。Parameter。啊,获取初始化参数。哎,就是这样的。这是我们说的第一个叫初始化。那么具体的初始化怎么去配,我们可以在web.X模拟里面去配,我们也可以在主机里面去配,是吧?这个就不重复了。那么第二个我们讲的是。这是另外一个接口,注意了,和select conve,它们都属于接口。这个solid conducts叫上下文。
05:01
我们可以通过这个对象。啊,通过conduct。获取配置的上下文参数是吧,同学们。我们可以去配置获取的上下文参数,你前面这个初始化是不是和具体的某一个select相关的,和某一个select实例相关的,而我们这边所配置的上下文,它是整个应用程序相关的。我们在任何的smart里面都可以获取到。所以说我们在web.X文件当中,我们可以通过conduct。啊,可以去设置。那么这是我们啊讲的这么两个小的知识点。那么我们还讲了哪些内容呢?再往下。第三个小的知识点。我们给大家介绍的是MVC这个模型。其中呢,稍等啊,我把它拷过来。第三个。MVC。啊,其中呢,我们这个V,它指的是view视图。
06:03
好C,它指的是CTR。啊,它指的是控制器。那我们重点要说的是这个MM它指的是一个model,我们称之为叫模型是吧,那模型有很多。模型有很多种类。比如说数据访问模型。那这个其实就叫do是吧,同学们叫数据访问对象data access object数据访问模型。那比如说我们还有业务逻辑模型。那么我们这个称之为叫Bo,对象叫business object。那一般我们命名叫service或者叫BZ都可以,有些企业叫BZ,有些企业叫service都行啊,没问题的,那当然我们还有值对象。啊直对象。直对象模型,那我们这个称主叫pogo。当然其实呢,我们系统当中有些还有可能会出现另外一个叫d to。
07:00
DT叫什么呢?叫数据传输对象。叫d to。特别是我们在做前后端分离的时候,我们需要把一些数据,把它封装成一个专门的一个对象。然后传输给别人,这样的对象我们称之为叫d to。啊,叫数据传输对象等等等等,这是我们的模型,那么呢,我们上一次课,我们主要说的是这个业务逻辑模型,因为我们前面在写这个水果库存系统的时候呢,我们是没有业务逻辑层的。我们是直接在控制器CT当中就直接去调用DA当中的操作了,是吧,同学们。而我们,但是我们现在我们却说了,因为我们当前的库存管理系统比较简单,所以说没有这个业务逻辑,逻辑啊这一层啊,感觉也问题不大,因为业务业务逻辑确实太简单了。但是呢,我们实际开发的时候,我们的业务逻辑往往会非常的复杂。所以说我们的控制层啊,如果他再去调用DA,也就意味着在我们控制器当中充斥着大量的业务逻辑。
08:06
那么这个对于控制器而言,它的这个负担太重了。他既需要第一,他既需要去接受用户的请求。第二个。第二个他要负责去业务逻辑的这种逻辑处理。第三个他还要完成一些业务资源的一些转发等等等等,那么他的业务是比较他的这个工作是比较繁琐的,是比较重沉重的。啊,所以呢,我们可以把业务逻辑这块呢,我们可以把它专门的抽取到叫业务逻辑模型当中。然后呢,我们控制器直接去调用业务逻辑模型当中的方法,就能够完成比较复杂的功能,业务功能。而不管你的业务逻辑的这个有多么的复杂,没有关系,对于控制器而言,它对于它都是透明的,它不需要操心,因为我们所有繁杂的业务逻辑全部封装在这一层当中的一个一个方法里面。比如说我们给他举例子啊,我们的这个注册。
09:04
我们的控制器你只要调用一个方法,你只需要调用Bo当中的一个介方法,具体的这个业务逻辑,注册的业务逻辑是由它内部的软计测方法内部去控制的。是不是同学们和我们的这个控制器是没有关系的?啊,控制器你是不需要去操心的。啊,我们介绍了一个叫业务逻辑模型。OK,这个还需要大家去慢慢的去体会。只不过现在我说了,我们这个库存系统太简单了,业务太简单啊,所以你体会不到,你会感觉这个业务逻辑层老师我觉得他没必要,确实没必要,因为这个比较小,但是我们在讲第二个系统的时候,你会发现其实业务逻辑模型还是还是需要的。那再往后,如果我们再往后面阶段,我们碰到更大的项目,那不用说,业务逻辑模型必须得有。没有的话,你所有的业务逻辑全散在这里面,那就太乱了。那行,这是我们讲的第三个小的知识点。好了,那么我们讲的第四个知识点叫OC,这个知识点呢,对于大家而言稍微有点头疼啊啊。
10:10
也就是我们第四个小的知识点叫RC。那么ROC,我们有两个名词,一个叫ROC,一个叫Di。ROC叫控制反转,现在我们就来给大家解释一下。当然了,我们为什么需要这个ROC,我们首先我们给大家说的是耦合或者叫依赖。啊,我们给大家解释的什么叫耦合,什么叫依赖。然后呢,因为我们要解耦,我们要降低它们之间的依赖关系,所以我们才需要这个东西,是吧,这是它的一个原因。那么现在我来给大家说一说控制反转,什么叫控制反转?控制反转,大家思考一下,之前我们在当中。控制反转。比如说之前。
11:00
在中。我们创建service对象。我们是这么去创建的,比如说。Fruit service等于new fruit service m。我们是这么写的。没问题。那么这种写法。这种写法。不能说它有什么问题啊,当然我们非得说它有问题,就是因为它这边六了一个具体的一个IP类,我们说我们说控制器层啊,控制层和我们的业务层是不是有耦合啊,对吧,这是我们所说的问题。那大家想想,比如说我这么来说啊,这句话。如果出现在。中的某个方法内部。那么那么什么呢?那么这个flute。
12:01
Split的。用玉。啊。它的作用域。啊,应该就是这个方法级别。是不是?如果这句话出现在。类中,也就是说,也就是说fruit斯是,呃,不叫斯。Service是一个成员变量。那么这个。Flute的。租用玉,也也就是他的生命周期。啊,应该就是这个实力级别。体会一下两者的作用,欲是不一样的。哎,是不是我在一个方法里面,我去溜了一下。那么我这个变量是不是只存活在这个方法内部,一旦这个方法执行完了之后,这个变量是不是就消失了呀?下次我再调用这个方法的时候,是不是这个变量又重新再创建一个实例啊?
13:02
也就是说,他的生命周期是比较短暂的。我需要经过大量的繁琐的创建和销毁的过程,要重复这个过程。如果我把它定义定义成乘月变量。我定义成程序变量之后,它的生命周期会扩大。啊,扩大这一人会觉得那这样挺好的,我不需要去频繁的创建和销毁,但是他的生命周期扩大,就有可能存在很多线程不安全的问题。啊,那当然我们要讨论的不是现在我们要讨论的不是这个线程不安全,我们需要讨论的就是说这个对象它的生命周期是由程序员来控制的。我们写在类里面和写的方法里面是不一样的,这是由由我们程序员自己来决定的。啊,也就是说这个对象的生命周期由程序员自己来控制,只不过在Java语言当中,我们有Java虚拟期,你感觉到这个对象回收的事情,你从来没考虑过,因为有垃圾回收器,他不会帮你回收,但不管怎么说,他的生命周期确实啊,确实是有我们程序员来维护的。
14:06
再来。那么后来呢,我们讲了这种叫OC。啊,之后我们怎么做的呢。之后我们是怎么做的呢?之后我们在application。Context。点XL中。定义了这个service。是不是,然后通过解析XL,然后通过解析X。啊,产生service实例。稍等啊,我上面这个单词写的不对。稍等啊把它拷贝。这个不叫写错了是吧,同学们。叫啊。这写错了是吧,叫service啊,帮我看着啊。好,现在应该没问题了吧,好了。
15:00
还有问题吗?这个。这个写的不对。后面写的是对的是吧。这边写的不对啊。嗯,那怎么大姐没提醒我。再来看啊。然后我们通过解析XL产生这个float service service的实例,啊,存放在哪里?是不是存放在一个叫冰map中啊?是吧,这个冰在一个。冰factory中。是不是在它里面这个b factor一个实现类叫application,叫class application是吧?同学们啊,我们是存活在这个b factory当中的。那也就是说什么呢?也就是说我们配置文件当中的这些对象,它的生命周期还在我们某一个select当中去吗?它不在我们里面了,他这个对象是不是通过解析XL产生的对象是不是全部存放在这里面了。那也就是说我们每一个实例对象全部依附于这个容器了吧,这个容器相当于什么时候创建,哎,我们就开始创建这些实例对象,这个容器如果销毁了,那么这些对象也就销毁了。
16:11
所以说我们把他的生命周期转移了。因此。我们转移啊,或者叫改变。改变了之前的。Service实力。啊,DA实力。实力等等。啊,他们的生命周期。也就意味着控制权。控制权不在程序员手上了。啊,控制权从承权。啊,从我们程序员转移转移到b factory。就这样的。所以我们称之为叫控制反转。本来这些对象的生命周期是由程序员来控制的,现在我们全部把它转移到这个b factory当中去。
17:00
啊,然而这个factory我们就称之为叫RC容器。所以我们称之为叫控制权进行了一个反转。这是我们解释的,叫控制反转。这个现象。我们称之为。我们称之为叫控制反转。下面一个我们称之叫依赖注入。那么,依赖猪猪指的是什么呢?依赖猪肉。我们之前讲为什么需要OC,我们讲了一个叫所谓的叫依赖。或者叫耦合是吧,某一层上层离不开下一层,上层对下层总是有依赖。之前。之前我们是。弗洛特。啊,之前我们是这么写的。之前我们在。
18:02
控制层。在控制的。啊,出现代码是这么写的。因此。那么。那么控制层和思维四层。存在二合。对吧,他们是存在耦合的。那么之后我们是怎么做的呢?之后。我们怎么做的呢?我们把代码修改成啊,我们将代码。我们将代码。修改成。他到他。直接等于闹。是吧,同学们,我们直接修改成这样,然后。在配置文件中。啊,配置。所以我们这边写的病ID,比如说flu。
19:00
啊,或者叫fruit吧。就这么写吧,Class,好,比如说float control,或者叫都行吧。好,这是个病,那重点是不是就是我们这个病内部的一个标签啊,叫property,我们写的是叫float service。If叫flute service。就这样子。那我们这么一写,就表明你这个controller是需要这个service的。那么我们RC容器在解析这个配置文件的时候,它就会去寻找到这个service实例,然后给你注入到这个control里面去,是不是这样的?给你注入进去。以前是我们自己主动的获取,现在是给我们注入,我们称之为叫依赖关系,以前是主动获取的,我们称序主动的去去绑定的,现在我们是靠这个配置文件解析容器帮我们注入进去,我们使用的是反射技术进行注入的,对吧?好,这就是所谓的叫依赖注入。
20:04
现在我已经给大家解释了,咱们到下个阶段讲框架的时候,我再次给大家解释,控制反转叫什么啊,依赖注入是啥意思,那那个时候我们就当复习了啊,就不是新课了。所以现在希望大家好好的去体会。现在我们写的应该应该来说是比较简洁的这个代码,因为底层的ROC是我们自己来实现的,所以呢,大家去理解这个概念是非常好理解的,如果ROC的这个代码大家啊写写的这个多写几遍的话。对这个控制反转,对一代出入应该会深有感触。啊,但是如果说这块你啊底层的ROC这个实现啊,如果说你这个没有掌握的话,那么我们学框架的时候,大家很多时候还是停留在概念上面。啊,所以希望大家能够现在就抓紧这个,抓紧现在这个时机,好好的把这个去好的琢磨一下。那行吧,这是我们上一次课所说的内容。再来。
21:00
OK,那么我们今天要讲的内容。今天我们要讲的内容,第一个我们需要讲过滤器。这第一个过滤器。第二个,我们需要给大家讲一下事务管理。那么这个事务管理当中。好,把它写在这。啊,这是我们事务管理管理当中要涉及到一些类啊。Transaction。那么第三个呢,我们需要讲一下精灵器。我们称主叫listen了。那么它的一个应用叫conduct loader。OK。那行,下面咱们接下来看看今天要讲的一些内容啊。
我来说两句