00:00
各位,下面呢,我们继续来学习spring框架,刚才我们讲到了IOC中的B的作用域,也就是我们如何设置你创建的B实力是单实力,以及它如何是多实力,那我们下面继续往下来学习,下面咱们讲什么呢?就讲一下B的这个生命周期,把这个给各位做一个详细的讲解,那首先咱先说一个概念,就是什么是。生命周期这个给各位先做个说明,这个词呢,应该说不难理解,咱在很多地方都见到过类似词,比如说在JA外阶段,有一个很重要的概念叫so that so that有它的生周期,而我们现在在什么里边这个B也是有它的生命周期。那什么叫生命周期呢?说的简单一点,就是你这里边的一个对象,从你对象的创建。
01:00
到你这个对象。销毁的这么一个过程,它就称为这个生命周期,所以咱们现在讲的就是B的生命周期,就是B这个对象什么时候创建,什么销毁,包括里边是怎么样的过程,所以下面给各位做一个详细讲解,关于这个病的生命周期。那我这里边给大家写一下,就是第二部分B的。生命周期,那病的生命周期呢?它里边主要有哪些过程?我把这过程给各位先用文字描述出来,然后咱们通过效果给各位朋演示出来里边的具体效果,那我们看一下病的生命周期,首先里边的第一部分。那第一部分呢,咱这个说到生命周期,是不是你对象从创建到销毁的过程,所以它里面的第一步肯定要创建你的B实例,而咱们创建bin实力,那之前讲到过,比如现在我配置一个b ID class这么一个标签,包括它的属性,它默认是不是找里面那个无参的构造型创建,或者说他也可以用那个工厂创建,所以第一部分就是。
02:12
咱可以通过里边那个构造器去创建你那个B的一个实例,说的通俗点就是执行里边那个无参数的构造去把对象创建,这是里边的第一步,这各位知道,然后这个做到之后生命周期中的第二步,因为咱们创建对象之后,如果里边的有相关属性,那我们向属性中是不是可以设置它的值啊,这是里边的生命周期中的第二步,就是为。B的这个。里边的属性来设置它对应的值,或者说对B的一些引用,比如咱之前说那个外物B的一个方式,我写一下就是和对其他病的一个引用。
03:02
然后这个过程中呢,如果说咱们注入属性,或者说引入其他外物币,它肯定会调用你的类中那个set方法,是不是这个过程,所以这是里边的第二步,比如说我再重复一遍,第一步就是通过构造器创建B的实例。然后第二步为bin的属性设置值,或者对其他bin的一个引用,咱们会调用赛的方法,把这过程做到,然后这个做到之后,我们的生命周期中的第三步怎么做呢?它要调用bin里边这个叫做初始化的这么一个方法,我强调啊,什么叫初始化?就是你现在这里边创建对象,包括也设置了值,然后它会调一个初始化的方法,这一方法需要咱们一会儿要进行这样的配置。这是第三步,然后这一步做到之后,第四步,当我们也创业对象,也是指也调用初始化对象之后,那我现在这个B肯定就可以使用了,比如说我这个对象或者实力就已经获取到了,这是里边的第四步,然后这步做到之后,我们生命之中的第五步,第五步怎么做呢?咱对象创建之后,最后是不是要销毁啊,那最后一步就是当我这个容器在关闭的这个时候,那我现在它会调用。
04:29
B里边这个就是销毁的那个方法,也是这个时候呢,你这个B它就销毁了,但是这个销毁方法它需要我们自己来进行配置,这个销毁的方法就是里边这个初始化的。这个方法以及销毁的方法都需要我们做外景配置,所以这就是关于B生命周期中五个最基本步骤,我把步骤给各位再重复一遍,然后咱们通过效果给各位把这过程详细演示一遍,咱再说一遍啊,首先第一步这么周期通过构造器创建并实例,第二步设置使用值或者引入其他的B,第三步它会调里面一个初始化方法,但是这一步需要配置,第四步对象就得到了,你就可以用到,然后最后一步,当容器关闭的时候,必要销毁,它会调用销毁的方法,这个过程也需要咱配置,所以这是关于B生命周期中的一个最基本的这么一个步骤,通过这个五步就是完成B的这么一个创建到销毁的这么一个过程。
05:33
这个啊,我们做一个说明,然后下面呢,我把这过程通过代码给大家详细来演示一下,打开这个该怎么去做。就是第三部分,咱们来演示一下B的这个。生命周期我们来做这操作,那这里边给各位详细写一下,大家怎么演示啊,比如现在呢,在这里边我把这些先给它关掉,然后关掉之后我现在在里边呢,就来创建这么一个类,然后通过这个类来演示B生命周期这个过程,那里边比如说我现在先来个包,这个包我就叫做B。
06:15
然后在B里边呢,我创建一个类,比如这个类我起个名字,比如我就叫这个。Orders啊,这个类,然后这个写完之后,在类里边呢,大家给它写上这么一个相关的属性,就来一个private string,我叫o name,生成它里边的set方法。把这个生成。然后这里边啊,现在我们看到我们就写了一个类,然后这个类写完之后呢,咱们把这个类在我们的配置文件中,肯定要进行这么一个配置,那我现在里边我再建一个。配置文件我用之前的复制咱改一下,比如文件我叫这个。B4XL,然后在里边呢,把这个对象配置出来,我们叫。
07:04
Orders,然后里边写上它这个包的路径B,里边的orders包括注入它这个属性啊,比如有old name,然后里边有一个Y。Y6中就是你的订单的名称,比如咱们现在买一个。手机这个就完成了一个基本配置,所以咱们把这个基本结构就写出来了,然后写完之后呢,咱们对照我们这个生命周期的步骤,把它来做演示来看第一步。第一步是不是要创建对象,比如说我现在你配置之后,它会找到里边的无参构造,把这对象我们要创建,这是里边的第一步,那我现在为了明显我这么来做啊,我在这里边呢,就写出它那个无参数的构造,为了咱们能让它效果更明显,我把构造。写出来啊,就是无参的构造,然后在无参构造里边呢,我们为了明显。
08:03
做个输出。因为这是里边的就是。第一步啊,它就执行了无参数的构造,创建了bin的一个实例,第一步它会执行这个方法,所以咱一会儿通过输出看一下第一步这么来做这个完成,然后完成之后再看第二步,第二步这里写到它会调用set方法,是不是做这个属性的一个设置,就是你这个注入这过程C单第二部分我在set方法中就这个方法,因为咱们做了配置,是不是可以注入在里边我做个输出。然后这书中我写个这么一个输出内容,比如这是我们的第二步,它会调用set方法设置我们这个属性的值,这个第二步会这么执行。有各位能看懂啊,第一步创业定向不算构造,第二步在的方法设置值,然后做完之后大家看下面有第三步,我这里写到第三步呢,它需要调一个初始化方法,这里边有这步骤,但这方法需要我们自己来配置,那怎么做给大家写一下啊,首先第一个。
09:14
咱们可以在那个O类中呢,给它创建一个执行的那个初始化的方法,这方法需要自己创建,那比如说我就写一个方法来做测试,假如这方法起个名字我就叫。阴逆头。Method这个方法名字我是随便写的,然后在里边我做个输出,这就是它里边的。第三步,执行这个初始化的方法,这个啊是我们写出来的,但是我强调你这么写之后,大家发现这是不是指一个普通的方法呀,这方法它默认肯定不会执行,咱需要配置让他去执行,那怎么做,就是我们现在在我这个bin标签里边有个属性。
10:03
咱找个属性,大家看这属性。叫什么init method,是不是初化方法,然后把咱刚才写的方法名字写过来可以了,然后这过程中就会实现我们的第三步第样串号方法,注,这方法里边只写名字,后面别加个括号啊,对不对,就写一个方法名字,这样的话把第三步做到第三步会只用这个方法,我们也做了输出。然后这个做到之后,第四步呢,咱就可以获取到这个对象,而获取对象呢,咱肯定是写这么一个测试的这么一个方法,就这位置。那我写一下,比如现在。我写一个,比如叫这个test b3,然后里边找到配置文件这个。B4这个位置得到你这个OS这个对象。我把这个得先得到啊。这个orders。这里边我们叫。Orders。包括orders,最后我也可以给他做一个输出,比如这个orders。
11:05
然后各位注意,在这一步的时候,当我们调用了get b这位是不是得到了我们对象,这里边我做输出,这就是我们的。第四步,获取到了你那个就是创建出来的B的这个实例的这么一个对象,把这对象就得到了,这是它的第四步。各位把这知道,所以咱们现在把前四步做到了,然后都做到之后呢,还有最后一步。最后干什么,你这对象也创建了,也设置指并也得到了,最后是不是要销毁啊,所以咱需要把它销毁一下,那怎么销毁呢?我强调啊,这个销毁的话呢,咱们这里边首先第一个在销毁的时候,它会执行一个就是销毁的方法,这方法需要我们设置,另外这个销毁对象需要咱们手动调用一个方法进行销毁。
12:00
那什么意思,给大家写一下,首先第一个我在这个order里边呢,比如我再来一个方法,这个方法就是创建那个。销毁的时候执行的方法。执行的这个我们叫做销毁的方法,然后这个方法起个名字,比如叫个。Method,这是我们的第五步。执行了你这个。销毁的方法,然后这个方法同样咱需要在B标签中做个配置,而这配置就叫做destroy method,我们叫destroy method,这样的话会执行里边的这个方法。这是一个执行,但是现在你这么做的话,咱并没有让这个B销毁,咱最后需要手动让你这个B的这个实力。销毁,因为只有你销毁之后,他才去调这方法,你不让他销毁,这方法不会调用,那怎么销毁,咱需要手动给他弄一下,给大家强调啊,在这个就是application content中有个方法叫可漏方法,可以销毁。
13:08
但我们强调啊,你看我现在是写的方法,它就可以完成这么一个销毁,把这个做到,但是销毁的时候啊,里面有个特点。大家会发现啊,我这么写之后,它是不是给咱们自动做了一个强转,什么意思呢?我强调一下啊,比如说现在呢,这里面,比如说我把这个结构咱打开大家看一下啊,就是在application contact这一个接口,这接口中的。没有这个口子方法,咱需要找它的子接口,就这个接口有的方法,而这子接口有它对应的实现类中肯定也是有它这个方法,所以我们现在其实就可以直接用里边这个实线内,然后调用,比如这位置啊,你可以这么写。大家写上啊,你可以写上啊,比如说为了明显我把它先注掉啊,咱就比较来看,让大家看的更清晰啊,也要来看,就是现在什么意思,我们这K接口中没有这个可作方法,单需要用它的子接口,或者用它的实现类这个位置我可以直接用这实现类,包括这里边我们加上这个叫。
14:14
Con。点close,当你调这个方法之后,它就会把bin销毁,一销毁会执行里边这个销毁的方法,所以这是里边一个演示的一个过程,咱把它就做到了,所以各位啊,把这个知道怎么去做,然后我把里边的核心代码给各位截到我们的笔中来,咱们最后把效果我们来做一个最终测试。这是那个。相关的类啊,然后这是配置文件,包括还有咱们这个测试的方法,在测试方法中,咱需要手动让这个bin实力交回,就调这个可漏的方法把它完成。这个啊是我们写的一个基本的测试,通过这段代码,咱就为了演示B的这个生命周期,就能看到它里面这步骤是怎么执行的,比如第一步,第二步,第三步到底都是怎么做的,咱是并没有目的,所以现在把这个完成了,完成之后咱们把代码来浏览一遍,最后我们来测试效果啊,咱浏览一遍啊,首先里边第一部分先执行无参构造调方法,第二步调赛的方法,设置值,第三步调用初始化方法,第四步得到对象,然后第五步我们进行销毁。
15:31
调close可以销毁,销毁的时候会执行这个第五步这个方法,另外初始化和销毁方法咱需要在B标签中进行配置,所以这样的话把这个。过程我们就完成了,然后完成之后,我现在把这个方法执行一下,咱就看一下这个生命周期里边的执行过程,看我们这个几步操作。然后大家看啊,你看这步骤是不是就是12345,就咱多了一个对象输出第一步。
16:02
初始化对象,然后第二步啊,这第一步创建对象,第二步赛的方法,第三步初始化,第四步并实例这个执行,然后这里边第五步进行销毁方法,所以大家看到现在咱通过这个五步是不是就完成了生命周期的演示,各位把这个过程给他知道,就你把这个生命周期里面有哪些步骤,包括每个步骤中到底是干什么的,大家给他要牢牢记住。这个啊,我们就演示出了B的生命周期里边的完整过程。各位把这个记住啊。然后这个说完之后呢,咱下面进一步来说明啊,就是我们的第四部分。我这里强调啊,就是咱们刚才演示的过程呢,是我们说这个死文里边loc溶剂中的B的生命周期,其实在B的生命周期中呢,如果说啊,你想看到更完整,其实他还有另外的两步操作,就是他除了这五之外还有两步操作,而这过程叫什么?它叫B的这个叫后置处理器。
17:09
给各位写一下啊,就是后面还有两步,它叫做B的后置。处理器也是在这五中,还要加上另外两部,那这两步是什么,给各位写出来,然后一会儿我也做演示,我把这五步先拿过来。然后这里,然后在这个五基础之上,还有另外两步,这两步在什么地方呢?大家看第三步。第三步是不是做这个初始化的方法啊,大家往下延拿过来啊,做初始化,所以现在这里边的第就是这两步是什么呢?在我们的制化之前,它会调个方法,在你的制化之后,它又会掉方法,所以里边还有两步,就在第三步之前和第三步之后会做这事情,那各位写下啊,也就是说加上我们的后置处理器之后,你这里边这个。
18:05
病的生命周期。它一共是有这个。七步的这个操作啊,注意一共是有七步,但是如果你没加后置处理剂是有五步,加上之后一共它是有七步,那这七步写下啊,第一步第二步不变,第三步大家换一下第三步是什么呢?也就是说我们在做这个初始化之前,它会把我们这个就是B的这个实例,因为前面你有创建把这B的实例。传递给那个就是病的一个叫后置。处理器在这里边主要传给它,里边有一个方法,这方法叫post pro before in这么一个方法,传里边这么一个方法,这是一个,然后在你出它之后,它也会把这个B的实例传给后处理器中的另外的一个方法,所以里边会有这么两步操作,这两方法一会咱会继续写到我把这步骤写完整啊,123。
19:08
四这是五,然后后面是第六步,这是第七步啊,这里边就多了一个后置处理器,所以它里边需要有这么两个步骤。主要是第三步和第五步的这么两个变化,其他部分跟之前都一样。这个啊,我们做一个说明,然后说完之后,咱下面来写下这个叫后置处理器,把这个就加到里面去,然后咱把它的完整流程演出来啊,那我们看怎么做啊,就是第五个咱们就演示添加。后置处理器的这么一个效果,那咱首先呢,先创建后置处理器,怎么创建呢?我们就要这么写啊,创建一个类,让这个类呢,怎么样实现一个接口,这接口名字就叫做bin post process,我写一下啊,应该叫B。
20:04
Post post。就是实验这个接口,用它来创建一个叫后置。处理器,然后在里边有两个方法,两个方法就是咱们刚才说的第三步和第五步的知情,那我把这个给各位写一下啊,我现在呢,就在这个B里边,咱给他写上一个类,给这个类我起个名字,我就叫买B。Post这个类,然后这个类呢,实现一个接口,这接口叫b post post这个接口,然后在里边呢,就是在这个接口中呢,它里边有这么两个方法,咱把里边的两个方法给他,就最终实现一下,然后咱就能看到它的最终的这么一个效果,讲方法是什么呢?咱们到这个接口中看一下啊。就这两方法,那我现在把这两方法咱就给它复制到我们这里边来,然后咱把它的这个效果,我们最终给他演示一下啊,我把两个方法咱就直接给他直接。
21:10
复制到我们这里边来啊,给它做一个复制。然后复制之后,在里边咱们把它效果就能看一下,那咱们啊把这个结构给稍微改一下啊,首先这里边我都改成这个public。然后上面啊,就这可以去掉,我来一个那个叫。Override啊,就是它实验里面这个方法,把这个给它写出来,所以现在里边有这么两个方法,然后给打开,在方法中大家看到啊,这里边呢,首先你看我们刚才提到,在我做初始化的时候,会只用两个方法,就是在你初始化之前,它先只用这个方法,叫postpro befored这个方法。把这方法名字给各位拿过来,就是我们的第三步,它会执行这个方法叫post post before这个方法,然后这个时候你在这个赤化的就是之后会执行里面这个方法叫post post after这个方法,最后把这个方法给各位也是复制过来。
22:12
啊,所以里边有这么两个基本的方法。然后咱们为了能看到效果,我在两方法中咱就分别做输出,然后咱看一下里面这个基本的这个第三步和第五这过程,那我给他注入一下啊,那我强调这里边做法是怎么样?刚才提到在你创建对象注使用之后,他把这个B先传给这个方法,然后进行初始化,初始化之后再传给这个方法,所以这里边你不要存now,是re存你这个B,这B就是你串出那个bin实力的对象,那我现在在里边我做个输出。好,我把这个输出一下啊。比如这里边我写一下,它就是这么写啊,在我们的初始化之前执行的这个方法。
23:03
然后下面我也做输出,我就说一个在初始化之后。执行的方法,咱们把这个给它写出来啊,这个就叫做后置处理器,我们现在就这么来创建,把这个给各位复制过来后置处理器,然后后置处理器创建之后,大家注意啊,因为我现在这么做是不是就是一个普通类呀,那你普通类瑞并不知道它是一个后置处理器,咱需要把它在我们这个配置文件中进行配置,就配置一下这个后置处理器。那我来写一下啊。我写个注释,它就叫做配置。后置处理器,那配置方式就是创建对象,咱来一个B。加上一个ID。再来一个class class里边加上你这个名字,比如叫my be。
24:00
Post把这个就加上,所以这样的话我们就完成了,而这过程怎么样?当你在加载配置文件的时候,它会把你这个对象创建,并且把你后置处理器已经创建,而后置处理器它怎么知道后置处理器,因为我们这个类实验这个接口,当你实验接口之后,主任就把它作为后置处理器执行,而后置处理器会对你当前配置文件中的所有B都添加这个后置处理器的处理什么意思呢?你看我现在。我里边是不是一个bin叫orders,它会为这个添加后处理器,假如我现在还有一个B,假如这个bin呢,我叫这个book,那它为这个book也会添加这个后置处理器,就你这么做之后,为你当前配件中的所有这个B实例都添加上后置处理器,也就说里边的这个方法都会执行,所以咱们现在把这个就加上了,在这里边我们创建了后置处理器,然后里边两个方法,一个方法在你初始化之前执行,一个方法在我们的初始化之后执行,然后在两方法中我刚才分别都做了输出。
25:10
那咱们就看一下它最终的效果,因为刚才咱们提到我们做这个。定的生命周期,它一共是有这么七步的操作,所以咱现在就把这个七步的流程做一个最完整的演示,把这个咱就最终给他演出来。那咱们把这个最终看一下哈,我把这个代码咱们现在给他。执行一下,刚才没有加后置处理器,只有五步,现在我们加了七步。然后大家看特点啊,各位看啊。之前的五步没有什么变化,但我们看第三步之前是不是在初始化之前执行,第三步之后是不是在初始化之后执行,就是咱们刚才的这两个方法是不是执行了,或者说你在这里边把这个步骤标的完整点,比如这是第三步,然后第四步,这是第五步,哎,都标完整,但是现在咱也看到了,里边这个七步的完整流程多了,后置处理器之后,他在里边的之前之后都有方法去执行,所以这是咱们说的一个完整的病的生命周期的演示,把这个给各位就演出来了。
26:23
我把这个图给各位截过来。就是咱们刚才演示的这么一个最终效果。这个啊,我们就说完了,然后最后给各位总结一下,咱们在LC容器中有这个bin实力,而bin这个就是它有一个生命周期,生命周期一共有七步操作第一步。通过构造器创建实例,第二步,调塞的方法,设置值,第三步把你的bin实力传给后置处理器中这个post pro before in的方法,第四步就是调用初始化方法,第五步传给后处理器这个out力方法,第六步得对象,然后第七步就是。
27:03
关闭容器,你的实力进行销毁,它会调这个销毁方法,这是关于B的生命周期,一个完成演示,所以通过的演示,各位把这个七步操作给他要牢牢记住,包括这个演示效果,要各位也能通过自己的一个电脑中把这例子给他,自己动手去操作出来。这样的话,咱就完成了病孕管理中的生命周期的这么一个讲解。
我来说两句