00:00
好,下面呢,我们来看一下这个B的生命周期啊,好,然后什么是生命周期,我们之前咱们在讲web的时候,大家都知道咱们讲过这个solvele的生命周期,还有过滤器的生命周期,因为像这些服务器组件呢,咱们都是交给solve light容器来管理的,咱们不需要去创建对象,然后我们也不需要干什么,我们也不需要去这个调用它的方法,它的这个创建对象的过程,然后以及它的方法的调用,都是由我们的solvele容器来管理的,所以说呀,这个对象它不是由我们来管理的,那咱们要知道它什么时候被创建了,什么时候进行的初始化,什么时候进行的销毁,那同样的道理呢,那咱们当前的对象是交给IOC容器来管理的,那咱们也要知道咱们的对象是在什么时候创建初始化,什么时候销毁,什么时候,它又是什么时候来为我们当前的属性进行个赋值,OK吧,好,那咱们在这咱们再重新创建一个类啊,比如说因为咱们其他。
01:00
它的类里面属性比较多啊,然后咱们在这创建一个UR,那这个user大家不需要自己写啊,大家呢,直接从我们的笔记里面去复制就行,因为这个东西没有什么写的意义,然后呢,咱们创建,你创建出来的跟我创建出来的是一样的,对不对?所以说呢,咱们以后会学习到一个叫做long book的技术,然后它就是对我们的实体类的开发来进行简化操作的,这样的啊好,所以咱们没有必要在这上面去花费太多的时间,然后大家直接复制过来就行啊。OK,那下面的,那我们再来看咱们在咱们的这个resource之下。然后再来创建一个新的配置文件,然后比如说这个咱们就叫做spring,然后杠life circle CY cle生命周期的意思啊,好,然后我们在这里面把咱们的这个user来交给咱们的IOC容器来管理,然后所以说我们需要在这来设置一个B,它的ID呢,咱们就叫做user,然后它的class大家看一下啊,咱们把它设置出来,好,那设置出来之后,我们下面是不是要来进行一个依赖注入,比如说它其中有这个ID,然后VALUE6,咱们给它一个一,然后复制复制。
02:15
这是username啊,用户名咱们设置为order me,然后密码password,然后咱们来设置为123456啊123456,好,然后下面还有一个年龄,那年龄的话,咱们就设置为23吧,OK吧,行,那我们现在呢,咱们的这个B咱们已经设置好了,好那它的生命周期到底是一个什么样的步骤呢?大家注意咱们在这儿呢,通过我们的一些这个输出,然后咱们来看一下它的过程啊,首先呢,在这先给大家说一下它的过程,第一步呢是什么叫做实例化,那它是通过什么实例化的,这个问题跟大家说过好多次,对吧?然后我们当前的IOC容器管理对象的时候,它是通过工厂模式加上反射来创建的对象,然后所以说呢,它在通过反射创建对象的时候,默认来使用的是无参构造,这个东西咱们给大家演示过,也也验证过啊好,这是咱这大家注意,这是咱们生命周期的第一步。
03:15
叫做叫做实例化啊,叫实例化,这样写吧,生命周期,生命周期一冒号,然后叫实例化,OK,好,那它的第二步是什么呢?大家注意,第二步叫做依赖注入,其实就是为我们当前的属性赋值,那所以说咱们随便去找一个方法,比如说咱们在set ID里边,然后咱们在这来写一下,大家注意咱们在这呢,来输出一个生命周期,然后二,然后冒号,这是一个什么操作,这叫做依赖注入啊,依赖注入其实就是为属性赋值啊。压力蒸汽依赖注入啊,行。好,那咱们的第三步是什么?大家注意,第三步呢,然后是初始化,但是呢,在我们当前咱们的优R里面,大家并没有找到初始化的方法,就像是我们之前咱们在讲solve的生命周期的时候和过滤器的生命周期的时候,大家想想solve和过滤器中是不是都会有一个初始化的方法叫in need,销毁的方法叫Dis destroy,但是咱们这里面有吗?没有,大家注意,我们如果要想来设置这个B的初始化的方法和销毁的方法,我们是需要通过咱们当前B标签中的属性来指定的,就比如说在这个地方有个init-method的来指定咱们初始化的方法,第一次choice-method来指定销毁的方法,OK吧,那行,那咱们在咱们当前的这个类中,然后来创建两个方法,比如说第一个返回值VO,来返回值VO,咱们叫iitt in method OK,行,然后这个咱们在。
04:56
这来输出一下,然后这个叫做生命周期,生命周期三冒号,然后这个叫初始化,OK,然后再来创建一个方法,然后叫做销毁,大家注意叫DY,叫destroy method,然后这个是咱们的第几步,叫做第四步啊,然后叫做销毁,当然第四步大家注意啊,来销毁,好,其实咱们的第四步咱们可以认为是使用当前这个,对,因为当它初始化完成之后呢,我们就可以直接来获取我们当前的这个并对象了。
05:33
那所以说第四步咱们可以认为是使用,第五步是销毁啊,当然呢,这个咱们如果只按生命周期的话,只按生命周期来说的话,那第四步就是销毁啊,OK,那行,那下面呢,咱们就来进行一个测试呗,点击右键创建一个类,比如说这个类咱们就叫做life circle CY cle OK,然后test好,然后我们同样是相同的操作,先获取IC,再获取并,然后咱们就可以来测试到它所对应的生命周期了,OK吧,好,叫做application contest LC,等于六一个class pass查苗,Application contest,把我们当前咱们的配置文件呢给他拿过来。
06:17
好,然后下面咱们就可以通过IOC容器来获取咱们这个对象了,叫什么叫user.class user,然后点class。User。然后点class就OK了啊好,那我们获取完对象之后,咱们在这直接把这个user给它输出,下面大家来看,我们现在来一个执行,大家看啊,好,然后它的生命周期咱们就可以看到,首先第一步在这儿大家注意实例化,第二步依赖注入没问题,但是初始化和销毁的方法咱们是不是并没有输出呀,对不对?好,这个时候大家注意,为什么?因为我们刚才咱们说了,你要想来设置初始化和销毁的过程,那我们是需要通过并标签中的属性来进行指定的,所以说在这咱们需要用到in method,是init method,然后再往下destroy method来指定咱们当前销毁的方法,OK吧,好,下面大家看好,我们在这再来一个执行,大家看啊,咱们说出的内容123是不是就都有了,多了一个初始化,但是并没有销毁,为什么呢?大家想一下,那销毁的方法什么时候才会执行呢?大家要注意是我们当前咱们的服务。
07:30
器关闭的时候才会销毁,OK吧,那服务器关闭的不是服务器关闭啊,这是solve that里面是咱们服务器关闭的时候才会销毁,那我们当前咱们的IOC容器中的B什么时候销毁,是在IOC容器关闭的时候销毁,那所以说咱们在这儿是不是可以再加上一句话,把咱们当前的IOC容器关闭掉,但是咱们点完之后,大家会发现这里面有close的方法吗?没有。为啥呢?大家想一下,我们之前咱们在讲IOC容器,然后在spring中的一个表现的时候,然后我们是不是说过,然后application contest里面它并没有提供刷新或关闭容器的功能,是在它的一个子接口中来提供的,大家有印象没有,叫做configu RI application contest。
08:20
好,这个大家注意啊,然后所以说我们在这咱们所使用的这个IOC容器,大家注意这里面并没有提供这样这样的一个关闭的方法,那所以说我们在这要干什么,大家注意,你要么用conigguable啊,Conigguable application contest,要么大家直接用我们当前这个实现类也是可以的,没有问题,知道不?哎,行啊,好,那下面呢,大家再来看,那我们现在咱们在ioc.close大家看是不是就有了,OK吧,好,下边我们在这咱们再来一个执行,大家看烧毁的方法,在这就会给我们输出OK吧,行,那这个地方啊,我要跟大家写一下啊,然后咱们的application context呀。
09:05
对不对,然后或者说咱们直接写这个confiable application context的它是谁?它是我们的application contact的的子接口,对吧?其中它是不是应该是扩展了什么方法,扩展了然后刷新和关闭容器的方法,容器的方法OK啊行,这个大家注意好,那我们现在呢,咱们就通过我们当前的一个配置,然后看到了我们B的一个生命周期,大家来看它的生命周期一共有几个步骤,一共有四个步骤,首先第一个步骤叫做实例化,第二个步骤为属性赋值,就是依赖注入,然后第三个步骤,然后应该是初始化,然后第四个步骤大家注意是销毁,什么时候销毁,看好IOC容器关闭时销毁。
10:00
OK啊,行,那这个是我们所看到的一个生命周期,然后咱们的初始化在这咱们来写一下,它需要通过咱们的这个bin的什么bin的init method哎,通过这个属性来指定初始化的方法,大家注意啊,需要通过这个属性,然后来指定初始化的方法,然后咱们的销毁呢,也是一样的,它需要通过咱们病中的什么属性,叫做第次创意属性,Dety叫第创意method的属性来指定出来,来指定销毁的方法,行,OK啊。像那这个是咱们病的一个生命周期啊,好,那当然咱们病的这个生命周期呢,它是跟我们当前病的作用欲有关系的,也就是说我们当前咱们病的作用域不同,那我们当前生命周期中的各个方法执行的时机也不同,好下面咱们就来测试一下。
我来说两句