Bean默认是单例模式,即每个对象只会被创建一次。前一次获取过的对象,这一次获取的还是之前创建过的。

如果我们希望每次拿到的对象都是一个新的,我们也可以将其作用域进行修改:

<bean class="com.test.bean.Student" scope="prototype" />

scope 作用域有两种:

  • singleton,也就是默认的单例模式
  • prototype,原型模式,也可以叫多例模式

创建顺序

当Bean的作用域为单例模式时,那么它会在一开始(容器加载配置时)就被创建,我们之后拿到的都是这个对象。而处于原型模式下,只有在获取时才会被创建。

单例模式下,Bean会被IoC容器存储,只要容器没有被销毁,那么此对象将一直存在,而原型模式才是相当于在要用的时候直接new了一个对象,并不会被保存。