




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章,Bean的配置管理与ApplicationContext的特性,2,回顾,掌握Spring各种抽象术语掌握Ioc及DI思想了解依赖注入各种方式配置Spring环境,编写简单Spring应用程序,3,目标,熟悉BeanFactory与ApplicationContext的运用了解Spring容器进行各种Bean的配置与管理了解ApplicationContext的特性,4,Bean基本管理,BeanFactory接口负责读取Bean定义文件,管理对象的加载、生成;维护Bean对象与Bean对象之间的依赖关系;负责Bean的生命周期。,BeanFactory,bean-config.xml,SpringIoC容器,bean-config.xml,bean-config.xml,Bean对象唯一,5,BeanFactory接口,方法:,6,示例,使用标签的name属性来设置别名,多个别名之间以逗号隔开。,beans-config.xml,7,代码分析,8,ApplicationContext,ApplicationContext是基于BeanFactory建立的,具备其特点之外,还提供一个应用程序所需的更完整的框架功能。,提供方便地取得资源文件方法;提供解析文字消息的方法;支持国际化消息可以发布事件,对事件感兴趣的Bean可以接收到这些事件,Spring的创始者RodJohnson建议:使用ApplicationContext代替BeanFactory,在实现ApplicationContext接口的类常用:org.springframework.context.support.ClassPathXmlApplicationContext,9,示例-1,在项目中加入spring-context.jar,10,示例-2,项目中有多个定义文件,如下:,11,代码分析-1,ApplicationContext可以读取多个Bean定义文件,以数组指定Bean定义文件的位置。,12,代码分析-2,可以使用标签导入多个资源文件,注意其位置,13,Bean的实例化,Spring使用默认构造方法,Spring使用set方式注入,注意:如果使用BeanFactory,只有在使用getBean()方法真正取得bean时,才会做实例化的动作;如果使用ApplicationContext,会预先针对Bean定义文件的内容,将所有的Bean实例化。如果不希望这样,可以在上设置属性”lazy-init”为true,ApplicationContext就不会在启动时针对该Bean做实例化的动作。,14,Bean的scope,用的属性“scope”来设置以下值范围:singleton:默认表示每一个Bean名称只维持一个实例prototype:表示每次指定名称来取得Bean时,都会产生一个新的实例requestsessionglobalSession,也可以通过的属性”singleton”属性为true或false,Web应用程序,15,Bean的生命周期,Bean初始化,Bean使用,Bean销毁,BeanNameAware,setBeanName(),BeanFactoryAware,setBeanFactory(),BeanPostProcessor,postProcessBeforeInitialization(),postProcessAfterInitialization(),在Bean定义文件中定义init-method属性设置初始化方法,修正Bean相关属性,BeanFactory通过读取定义文件来初始化所有Bean,ApplicationContext使用时将Spring-context.jar加载,DisposableBean,destroy(),在定义文件中设置属性destroy-method,16,示例,设计PersonBean,其属性pname(String)和page(int),在Spring的配置文件中设置的属性”init-method”,将Person的实例属性page初始为18;同时要求在初始化之前要修正pname的值都要大写。,为属性init-method提供方法,17,代码分析,注意:ApplicationContext会自动侦测是否在定义文件中定义了实现BeanPostProcessor接口的类,Spring容器会在每一个Bean被初始化之前、之后分别执行方法,18,结果,19,Bean定义的继承,在Bean定义文件中,可以设置属性abstract=“true”,表示这是抽象的Bean定义,Spring不会实例化它;在要继承中设置属性parent=“抽象Bean”,问题:在定义文件中可以不用abstract属性直接继承某个bean定义吗?,20,Bean的依赖设置,方式:Type2IoC与Type3IoC(利用构造方法依赖注入),21,运行结果,注意:在定义文件中,使用标签来表示将使用ConstructorInjection,必须依照构造参数的顺序。或者指定索引位置,“index”属性用于指定对象将注入至构造方法中哪一个位置的参数,参数索引位置从0开始。Spring会自动解析构造方法上的参数类型及所设置的依赖注入,用以决定使用哪个构造方法。,22,依赖值设置与参考,在定义文件中,如果设置某个属性为null,使用标签;如果设置字符串为空串:Spring中使用引用其他Bean,表示引用一个id或name,这个bean可以在同一个xml文件中,也可以不在当前xml文件中;不在同一文件中,使用import来引入其他配置文件;,表示引用当前xml文件中的id,使用内部Bean,不需要id,只能在此处使用。,23,示例,24,集合注入,对于数组、List、Set、Map等集合对象,在注入前必须填充入一些对象至集合中,然后将集合对象注入到所需的Bean,也可以由IoC容器来完成集合对象的注入;对于数组或List类型的依赖注入,在定义文件中使用标签;对于Map类型,使用标签,但要用表示key。对于Set类型,使用标签;若要注入的是properties类型,使用标签,25,示例,26,代码分析,27,结果,28,标签,Spring2.0可以新增标签进行扩充,使用、取代简化集合的配置。在使用之前在配置文件中加入util的命名空间。示例:利用标签改写上述配置文件,29,代码分析,添加util命名空间配置,若不指定,由容器自行决定实现的容器对象,30,资源、消息、事件,Spring提供了对资源存取的接口:org.springframework.core.io.ResourceLoaderApplicationContext继承该接口,使用getResource()方法来取得资源解析文字消息ApplicationContext继承接口org.springframework.context.MessageSource接口,使用getMessage()获得文字消息,从而实现国际化消息的目的。,Resourceres=context.getResource(“classpath:perties”);,31,示例,利用接口MessageSource的一个实现类ResourceBundleMessageSource来取得国际化消息,32,运行结果,33,事件监听与发布,在Spring应用程序执行期间,ApplicationContext本身就会发布一连串的事件,这些事件都是抽象类ApplicationEvent的子类如果对事件感兴趣,实现接口ApplicationListener,并在定义文件中定义实现该接口的一个Bean实例如果发布事件通知ApplicationListener的实例,可以使用ApplicationContext的publishEvent()方法,publicinterfaceApplicationListen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版汽车租赁与VIP客户服务合同
- 2025版风力发电工程包工合同
- 二零二五年度房屋买卖合同中合同效力及法律适用
- 2025版电信终端产品销售合同范本
- 2025版文化艺术中心场地租赁协议
- 二零二五年度文化产业股权质押投资管理协议
- 二零二五版木片出口业务代理合同
- 二零二五版历史学实习生实习就业保障合同
- 2025版防雷设备租赁与维护合同
- 2025年短视频广告合作协议书
- 药学处方审核培训
- T-MSC 005-2024 灵芝孢子油生产加工技术规范
- 职业院校班主任辅导员培训
- 贸易意向合作协议书范本
- 校园活动讲安全
- DB37T 5230-2022 岩棉复合板外墙外保温系统应用技术规程
- 外科腹腔镜手术护理
- 浅析立体心何模块在新高考中的命题方向研究课件高三数学一轮复习
- 太阳能光伏发电项目EPC工程设计施工范围及主要工程量
- 医院内部督查与监督制度
- 2024关于进一步提升基层应急管理能力的意见学习解读课件
评论
0/150
提交评论