Spring装配Bean的过程补充

Posted 指尖上的艺术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring装配Bean的过程补充相关的知识,希望对你有一定的参考价值。

对上一篇的《Spring装配Bean的过程》的过程说一下,不然真产生了误区。

误区在哪里呢?那就是spring bean的作用域问题。

说哈常用的两种作用域:默认是scope = singleton
singleton:在每个Spring IoC容器中一个bean定义对应一个对象实例。

prototype:一个bean定义对应多个对象实例,每次获取bean就是实例化新的bean。

下面说重点了:

当scope=singleton,即默认情况,会在容器初始化时实例化。但我们可以指定Bean节点的lazy-init=”true”来延迟初始化bean,这时候,只有第一次获取bean才会初始化bean,即第一次请求该bean时才初始化。这种情况就是上一篇博客中说明的。

就是想补充一点: 如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=”true”。

现在才是这篇博客的关键,误区之所在了。注意了哦。。。

当scope=prototype时,也会延迟初始化bean,即第一次请求该bean时才初始化。

是不是很惊讶啊。。。

那设置了scope=prototype和设置lazy-init=”true”对加载bean来说有区别不呢?

我的回答是他们压根儿就不是一回事,但是他们都会延迟bean的实例化。

今天工作中看别人代码带来的误区。就这么记下来了。。。

 

以上是关于Spring装配Bean的过程补充的主要内容,如果未能解决你的问题,请参考以下文章

Spring5 XML装配Bean

Spring - Bean装配

第2章—装配Bean—通过XML装配Bean

Spring Bean 基于注解的装配

Spring框架Spring依赖注入DIBean作用域Bean的自动装配

Spring学习系列 通过Java代码装配Bean