版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主讲人:蒋卫祥延迟符Bean的生命周期Spring入门与IoCBean的生命周期延迟符什么是Bean的生命周期?
SpringBean的生命周期指的是Bean从创建到初始化再到销毁的过程,这个过程由IoC容器管理。
BeanFactory首先通过构造函数创建一个Bean实例,之后它会执行Bean实例的一系列之前初始化动作,初始化结束Bean将进入准备就绪(ready)状态,这时应用程序就可以获取这些Bean实例了。最后,当你销毁单例(Singleton)Bean时,它会调用相应的销毁方法,结束Bean实例的生命周期。Bean的生命周期延迟符实例化:第1步,实例化一个bean对象;属性赋值:第2步,为bean设置相关属性和依赖;初始化:第3~7步,步骤较多,其中第5、6步为初始化操作,第3、4步为在初始化前执行,第7步在初始化后执行,该阶段结束,才能被用户使用;销毁:第8~10步,第8步不是真正意义上的销毁(还没使用呢),而是先在使用前注册了销毁的相关调用接口,为了后面第9、10步真正销毁bean时再执行相应的方法。Bean的生命周期延迟符<bean id="beanId"(1) name="beanName"(2) class="beanClass"(3) parent="parentBean"(4) abstract="true|false"(5) singleton="true|false"(6) lazy-init="true|false|default"(7) autowire="no|byName|byType|constructor|autodetect|default"(8) dependency-check="none|objects|simple|all|default"(9) depends-on="dependsOnBean"(10) init-method="method"(11) destroy-method="method"(12) factory-method="method"(13) factory-bean="bean">(14)</bean>1.Bean的定义Bean的生命周期延迟符id:Bean的唯一标识名。它必须是合法的XMLID,在整个XML文档中唯一。name:用来为id创建一个或多个别名。它可以是任意的字母组成。多个别名之间用逗号或空格分开。class:用来定义类的全限定名(包名+类名)。只有子类Bean不用定义该属性。parent:子类Bean定义它所引用它的父类Bean。这时前面的class属性失效。子类Bean会继承父类Bean的所有属性,子类Bean也可以覆盖父类Bean的属性。注意:子类Bean和父类Bean是同一个Java类。abstract(默认为“false”):用来定义Bean是否为抽象Bean。它表示这个Bean将不会被实例化,一般用于父类Bean,因为父类Bean主要是供子类Bean继承使用。singleton(默认为“true”):定义Bean是否是Singleton(单例)。如果设为“true”,则在BeanFactory作用范围内,只维护此Bean的一个实例。如果设为“flase”,Bean将是Prototype(原型)状态,BeanFactory将为每次Bean请求创建一个新的Bean实例。Bean的定义Bean的生命周期延迟符lazy-init(默认为“default”):用来定义这个Bean是否实现懒初始化。autowire(自动装配,默认为“default”):它定义了Bean的自动装载方式。dependency-check(依赖检查,默认为“default”):它用来确保Bean组件通过JavaBean描述的所以依赖关系都得到满足。在与自动装配功能一起使用时,它特别有用。depends-on(依赖对象):这个Bean在初始化时依赖的对象,这个对象会在这个Bean初始化之前创建。init-method:用来定义Bean的初始化方法,它会在Bean组装之后调用。destroy-method:用来定义Bean的销毁方法,它在BeanFactory关闭时调用。factory-method:定义创建该Bean对象的工厂方法。它用于下面的“factory-bean”,表示这个Bean是通过工厂方法创建。此时,“class”属性失效。factory-bean:定义创建该Bean对象的工厂类。如果使用了“factory-bean”则“class”属性失效。Bean的定义Bean的生命周期延迟符依赖的值设置与引用<beanid="helloBean2"class="com.my.ccit.HelloBean"> <constructor-arg><value><null/></value></constructor-arg> <propertyname="date"><null/></property></bean>构造参数设置成null<beanid="helloBean2"class="com.my.ccit.HelloBean"> <constructor-argvalue="大家好"></constructor-arg> <propertyname="name"value="XXX"></property></bean>在property中设置属性值Bean的生命周期延迟符依赖的值设置与引用<beanid="helloBean"class="XXX"> <constructor-arg><refbean="date"/></constructor-arg> <propertyname="other"><refbean="otherBean"/></property></bean>或者<beanid="helloBean"class="XXX"/>
<constructor-argref="date"/>
<propertyname="other"ref="otherBean"/></bean>如果Bean定义文件中已经有一个定义的Bean实例,则可以让某个属性引用这个实例Bean的生命周期延迟符依赖的值设置与引用<beanid="helloBean"> <propertyname="other"><reflocal="otherBean"/></property></bean>使用<ref>参考其他Bean实例时,所定义的Bean必须是同一个设置文件中,且指定“local”属性<beanid="helloBean"class="XXX"> <propertyname="helloWorld"value="hello"></property> <propertyname="date"><beanclass="java.util.Date"></property></bean>如果某个Bean实例只被某个属性参考过一次,可以直接指定其“class”属性即可Bean的生命周期延迟符依赖的值设置与引用<beanid="beanOne"class="XXX"depends-on="beanTwo,beanThree"/><beanid="beanTwo"class="XXX"/><beanid="beanThree"class="XXX">如果某个Bean在生成之前要求另一个Bean必须先实例化,则可以指定“depends-on”属性来设置Bean的生命周期延迟符自动绑定byName:试图在容器中寻找和需要自动装配的属性名相同的Bean(或ID)。如果没有找到相符的Bean,这个属性就没有被装配上。byType:试图在容器上寻找一个与需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 别墅建筑设计
- 高中化学选择性必修一课时作业8
- 礼服毕业设计
- 急诊科:创伤患者处理流程培训
- 妇科子宫内膜异位症手术后护理流程
- 室内设计毕设模板
- 青光眼预防监测培训措施
- 市场方案设计
- 服装设计毕业作品开发全流程
- 情绪内稳态科普
- 餐饮提升销售方案
- 人民医院档案管理制度
- 循环性休克及血流动力学监测概览
- 2025年重庆市初中生物学业水平考试试卷试题(含答案解析)
- 疼痛的评估与护理措施
- 老年患者跌倒预防与安全管理
- 2026年二建二级建造师公路实务案例分析考前预测三页纸考点重点知识记忆总结
- 2025重庆太平洋国际物流有限公司招聘4人笔试历年典型考点题库附带答案详解2套试卷
- 事业单位考试(医疗卫生类E类)试卷与参考答案(2025年)
- 2025年神经内科疾病诊治综合测试卷答案及解析
- 2025年湖南生物高考试卷及答案
评论
0/150
提交评论