Spring Bean的配置项:作用域与生命周期
2017-02-01 12:43
417 查看
Bean的配置项
id:唯一标识class:具体是哪一个类(理论上是必须的)
scope:范围
constructor arguments:构造器的参数
properties:属性
Autowiring mode:自动装配模式
lazy-initialization mode:懒加载模式
initialization/destruction method:初始化/销毁的方法
1、作用域(scope值)
singletion:单例 指一个bean容器只存在一份(默认模式)
prototype:每次请求会创建新的实例,destory方式不生效
request:对于request创建新的实例,只在当前request内有效
session:对于session创建新的实例,只在当前session内有效
global session:基于portlet(例如单点登录的范围)的web中有效,如果在web中同session
例:
<bean id="beanScope" class="com.imooc.bean.BeanScope" scope="singleton"></bean>
@Test public void testSay() { BeanScope beanScope = super.getBean("beanScope"); beanScope.say(); BeanScope beanScope2 = super.getBean("beanScope"); beanScope2.say(); }
配置了scope=”singleton”后,无论在这里获取了多少个bean的id,实际上都是在同一个Spring IOC容器中得到的一个唯一的实例(因为一直是在同一方法中获取bean),也就是无论获取多少个,其实一直在使用同一个对象。即两次执行say()方法输出对象的hashCode是相同的
<bean id="beanScope" class="com.imooc.bean.BeanScope" scope="prototype"></bean>
@Test public void testSay() { BeanScope beanScope = super.getBean("beanScope"); beanScope.say(); BeanScope beanScope2 = super.getBean("beanScope"); beanScope2.say(); }
如果这里配置了scope=”prototype”,那么两次执行,得到就结果就不一样了,也就是说,不是单例,每次请求(使用对象)都会创建一个新的实例
2、生命周期
定义
初始化(initialization method)
使用
销毁(destruction method)
① 初始化:
方法1:实现org.springframework.beans.foctory.InitializingBean接口,覆盖afterPropertiesSet方法。系统会自动查找afterPropertiesSet方法,执行其中的初始化操作
方法2:.配置init-method
例如设置bean中init-method=”init”那么在初始化过程中就会调用相应class指定类的init()方法进行初始化工作
② 销毁(与初始化类似)
方法1:实现org.springframework.beans.foctory.DisposableBean接口,覆盖destory方法。
方法2:配置destroy-method
③ 配置全局初始化、销毁方法(默认配置)
<beans default-init-method="defaulInit" default-destroy-method="defaultDestory" > </beans>
注意:
当一个bean配置了init-method 和destroy-method的时候,全局配置default-init-method和default-destroy-method会被覆盖掉。并且,实现初始化和销毁的接口的会比在xml中配置bean的方式更先执行。
如果有实现初始化和销毁的接口或者在bean中单独配置的初始化/销毁方法,这个时候可以没有全局配置
即使xml中配置了全局配置,但在代码中没有任何实现的话,bean的执行过程也不会失败(没有实现所以没有输出,但不会报错)。也就是说:全局配置的是一个可选的方法(可有可无),bean中如果配置了初始化和销毁,但没有实际代码实现的话,直接输出报错。
相关文章推荐
- 那些年、一起追过的Spring--(3)----Bean的配置项及作用域,Bean装配的生命周期,配置集合对象
- Spring Bean--Bean的配置项、作用域、生命周期
- Spring Bean的配置项及作用域
- Spring入门篇之Bean的配置项及作用域
- spring注入方式、配置项及作用域、生命周期、Aware接口、自动装配
- Spring学习笔记(5.Spring Bean装配之Bean的配置项及作用域)
- Spring2.5—— Bean的生命周期、作用域不同步的Bean
- Spring-基于注解的配置[03Bean作用范围和生命周期方法]
- spring心得2--bean的生命周期@Spring监听器的作用@Spring初始化容器案例分析@web项目使用
- 详解Spring中Bean的生命周期和作用域及实现方式
- Spring入门(Bean配置项、生命周期等)
- Spring中Bean的生命周期和作用域
- 【Spring学习20】bean作用域:理解Bean生命周期
- Spring入门篇之Bean的配置项及作用域
- spring心得2--bean的生命周期@Spring监听器的作用@Spring初始化容器案例分析@web项目使用
- spring心得2--bean的生命周期@Spring监听器的作用@Spring初始化容器案例分析@web项目使用
- Spring:Bean的作用范围及Bean的生命周期
- Spring的Bean生命周期内的callback方法和Spring容器启动关闭时的callback方法
- Spring Bean生命周期
- 详解Spring中bean的作用域