Bean的作用域
Spring 4.3中为Bean的实例定义了7种作用域,如下表所示:
ps:singleton 和prototype是最常用的两种作用域
singleton作用域
singleton是Spring容器默认的作用域,当Bean的作用域为singleton时,Spring容器就只会存在一个共享的Bean实例。singleton作用域对于无会话状态的Bean(如Dao 组件、Service组件)来说,是最理想的选择。
在Spring中配置singleton作用域的话,可以在Spring配置文件中,使用<bean>元素的scope属性,将Bean的作用域定义为singleton
例:`<bean id="scope" class="com.itheima.scope.Scope" scope=" singleton "/>`
prototype作用域
对需要保持会话状态的Bean(如Struts 2的Action类)应该使用prototype作用域。在使用prototype作用域时,Spring容器会为每个对该Bean的请求都创建一个新的实例。
在Spring中配置prototype作用域的话,可以在Spring配置文件中,使用<bean>元素的scope属性,将Bean的作用域定义为prototype
例:<bean id="scope" class="com.itheima.scope.Scope" scope=" prototype "/>
Bean的生命周期
了解Spring中Bean的生命周期的意义就在于,可以利用Bean在其存活期间的特定时刻完成一些相关操作。这种时刻可能有很多,但一般情况下,常会在Bean的postinitiation(初始化后)和predestruction(销毁前)执行一些相关操作。
Spring容器可以管理Bean部分作用域的生命周期。有关说明具体如下:
Spring容器中Bean的生命周期流程如下图所示;