00:00
各位,刚才呢,我们讲到了LCB管理中的BB也就是工厂B,包括和普通B它们一个比较,以及他们相关的特点,然后咱们下面继续往下学习,咱下面要讲什么呢?给各位来说一下,我们下面要讲的是病管理中一个东西,它叫做B的一个作用欲,以及病管理中一个叫做B的这个生命。周期。那咱们首先先说这个叫B的作用域,我先解释一下什么叫B的作用域,给大家强调,各位注意啊,咱们之前呢,在配置文件中一直在写这段配置,就是bin标签ID和class,而这个配置之后,咱通过我们的测试类中可以得到你创建的bin实例,或者说我这个对象是不可以得到,但是这里强调在我们此文里边呢,它在创建这个bin实例的时候,这B实力可以是一个单立的象,也可以是一个多实力,就是可以是单立对象,也可以是多立对象,而它在默认情况下是一个单立对象,但是咱可以设成它是一个多立对象,所以作用率什么意思呢?就是此文里边能设置你创建的并实力是个单实力还是一个多实力,这个叫B的作用域。
01:26
给各位写下。在我们这个此文里边。我们可以设置你创建的并实例是一个单实例。还是一个多实例里边是可以做到的,所以咱们下面就来讲里边的这个内容,看一下他怎么来做这个啊,各位知道什么叫作用域,就是你设置是单实例还是多实例,那下面咱看第二句话给各位强调啊,就是我们在此轮里边啊。
02:03
子文里边它在默认情况下,注意什么叫默认,比如说你不做任何设置,不做任何配置,在这个时候他创建的B是一个单实例对象。就是B是一个单实例对象。这是它的一个特点,但是咱能设置它是多实例,那我下面把这效果给各位先演示一下,来看这个是什么样的这么一个特点。给各位啊做一个演示,那怎么演示呢?大家看,比如现在我这里边呢,我就随便找个例子,咱应该就能演出来,因为咱之前有这例子啊,我就不再写额外的之前有这个,比如我就以这个book这为例。咱找到book,大家看我book里边是不是做了一个b ID class的配置,然后咱在里边能得到这个。Book这个对象,那比如说我这么来做啊,我现在呢,把这个book这个对象咱们做个输出,这时候可以把它输出,但是这里边我们要验证它是单实例还是多实例,那怎么做?单实例嘛,就是它只有一个对象,多实例每次都建一个新的对象,那我现在我这么来做,我把这个对象我再来获取一次,假如第一次我叫BOOK1,第二次我叫BOOK2,然后我把BOOK1和BOOK2分别做输出。
03:31
所以咱们这么来测试,如果说啊,你这是单实例对象,那两个这个实例对象的地址是应该是一样的,如果你是多实例,那对象地址是不是应该是不一样的,所以咱就用地址是否相同,验证一下它是单实例还是多实例,但是目前我这里边只是有最基本配置,没有做额外配置,也是在默认情况下,它应该是一个单实力对象,那我现在把这个执行,咱看一下它是什么样效果,就来做一个验证。
04:02
各位来看啊,在目前的情况下,咱们清楚的看到两个地址是不一样的,所以证明他现在在默认情况下是个什么,是不是一个单实例对象,所以这个啊,我们做了一个验证,然后验证方式很简单,你把这个对象获取多次,然后输出,输出之后呢,比较它的地址,如果说它的地址相同,那证明它肯定是一个单实例对象。这个啊,给各位也截过来,最终输出是这个样子,然后咱也看到它这里边的地址是相同的。所以咱们验证出了里边的这么一个特点,默认是单实例对象,各位把这记住啊,比如以后如果别人问到你,你要知道子纹里边默认的B是一个单实力对象,这咱就做到了,但是它单实力对象呢,咱也能够设置它是多持对象,那咱看第三部分就是如何设置它是单实力。
05:08
还是?多实例把这个给各位定位演示,那来说明啊,就是这个过程中呢,在我们的bin标签里边,我想这位置spring配置文件的bin标签里边,它有一个属性,就用于设置你是单实例还是多实例。这属性咱看一下啊,给大家写一下,比如现在来到里边,在那里属性,属性很好记,这个名字叫什么scope,就一个叫scope属性。我把属性小的位置。Scope咱通过scope里边的值可以做个设置,那它值有哪些,我写一下啊,Scope属性的值有多个,比较常用的有两个注意的描述啊,它有多个值,大家一般常用有两个值,首先里边有第一个值是最常用的,这个值也是它一个默认值,就是你不写默认就是它这个值叫single tone。
06:14
这就表示什么是一个?单实力。对象,这是第一个,然后里边还有第二个值,第二值是什么呢?它叫做prototype。这个表示它是一个。多实例对象,所以这是里边两个比较常见的值,那两个值给各位来说一下啊,首先第一个值叫single toy。这个你默认不写,就是它就是单实例,这咱刚才演示过了,然后第二个值,这个叫pro,当你写上它之后,就表示它是一个多实例对象,所以咱现在就是正么在设置,我把这个给各位截个图,就用一个scope属性能做个设置,那咱们测试一下啊,现在我改成了pro,然后来到我们刚才的代码中,我把刚才代码咱给它做一个执行,就是咱这book。
07:09
咱们来测试一下啊,看它是什么样效果。然后大家仔细看啊,两个对象的地址。不一样吧,不一样的话,证明他们是不是就不是一个对象,也是他们是一个多实例对象,所以这个啊是里边的这个特点,两个地址它们是不同的。我把这个给各位接过来。所以咱们现在就说到了,在这里边怎么设置它们是单实例,以及它们是多实例,各位把这个属性和它的值给它记住这个啊,我们做一个说明,然后说完之后呢,我再说的更具体点啊,就是这个两个值呢,就是它们之间是有一定的区别的,或者有不同的这个。特点。写下这个叫single to。
08:01
还有这个叫proto type,他们是有一定的区别的,除了说一个是单实例,一个是多实例之外,它还有一个区别给各位写一下啊,我这里给大家写的详细点就是首先第一个区别,Single tone表示单实例。然后这个pro表示多实例。这咱刚才都演示过了,然后它除了这个之外还有第二个区别,然后各位记住啊,就是这个single toy是不是一个单实例啊,就是当你现在这么做,比如现在我设置scope的值是single tone的时候,或者说你不设置,默认就是它,那就是怎么做,就是你在加载这个配置文件的时候,它就会给你去创建一个单实例的。这么一个对象,这是它的第一个特点。也就是说呢,我现在我这个值设置成了single ton,或者说我不设置,因为默认就是它,而这个时候当你在执行这行代码,是不是加载配置文件,它在这个时候就把这个单式对象完成创建,这是它的第一个特点,各位记住啊,然后另外咱注意,如果说我现在设置成这个值叫prototype的时候,就设置scope的值。
09:26
是这个pro的时候,那这个时候跟上面不一样了,这个时候呢,它并不是在你加载配置文件的时候创建对象,就是它不是在加载spring配置文件的时候创建你的这个。对象,那他在什么时候,他在你调用那个叫get b方法的时候,去创建一个多实例的这么一个对象,所以这个叫prototype是这个特点,也就是说呢,当我们把这值变成了叫prototype是这个,那这个时候第一步下载配置文件,这个时候没有创建这个对象,当你在用这个get b在获取这个对象的时候,它才会把这对象进行创建,而这个时候每次建的都是一个新的一个实例,或者说一个新的对象,所以他们在创建的时机是不一样的,C toy1加载就创建protype,在你调用的时候,就是你在获取的时候才去创建一个新的对象,所以这个啊是它们的两个的区别,各位把这给头记住。
10:36
所以这样的话,咱就把这个B的作用域就说完了,然后这个说完之后呢,其实我刚才提到这次我的值呢,有多个值,两个比较常见,另外还有几个值给大家也做个说明,就是下面还一个值啊,它叫做request。还有一个值叫做session,但是这两值咱基本上不用给各位说一下,做个了解,Request session什么意思呢?
11:04
如果各位啊,有web基础,应该都知道这两个是不是预对象,Request表示一次请求,Session是表示一次会画,就是我现在把这值可以变成request,可以变成session,当你变成request之后,你每次创建对象会放到快这个预对象中,当你写上session,它把每次创建对象会放到session中去,所以里边还有这两值,这大家做个了解,但咱一般用到就是默认的single购to,还有多实例的pro。包括这两个区别,各位给他要记住,所以现在咱就把这个B的作用域给大家就说完了,要各位掌握,在此文里边如何设置你是单实例,包括如何设置多实例,以及这两个值它们分别有什么特点,以及它们的区别。
我来说两句