Spring的Bean默认的是单例的。
Bean的作用域可以通过Bean标签的scope属性进行设置,Bean的作用域包括:
默认情况下scope="singleton" | 单例 | 任何人获取该Bean实例的都为同一个实例 |
---|---|---|
scope="prototype" | 多例 | 任何一个实例都是新的实例 |
scope="request" | request范围 | 在WEB应用程序中,每一个实例的作用域都为request范围 |
scope="session" | session范围 | 在WEB应用程序中,每一个实例的作用域都为session范围 |
注意:在默认情况下,Bean实例在被Spring容器初始化的时候,就会被实例化,默认调用无参数的构造方法。在其它情况下,Bean将会在获取实例的时候才会被实例化。
在Spring中,bean可以被定义为两种模式:prototype(多例)和singleton(单例)
singleton(单例):只有一个共享的实例存在,所有对这个bean的请求都会返回这个唯一的实例。
懒加载:在第一个请求时才生成一个实例,以后的请求都调用这个实例
<beans default-lazy-init="true">
默认非懒加载:启动容器时(即实例化容器时),为所有spring配置文件中定义的bean都生成一个实例