Bean的配置管理与ApplicationContext的特性.ppt

上传人:max****ui 文档编号:3391126 上传时间:2019-12-13 格式:PPT 页数:36 大小:963.50KB
返回 下载 相关 举报
Bean的配置管理与ApplicationContext的特性.ppt_第1页
第1页 / 共36页
Bean的配置管理与ApplicationContext的特性.ppt_第2页
第2页 / 共36页
Bean的配置管理与ApplicationContext的特性.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
第二章,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:message.properties”);,31,示例,利用接口MessageSource的一个实现类ResourceBundleMessageSource来取得国际化消息,32,运行结果,33,事件监听与发布,在Spring应用程序执行期间,ApplicationContext本身就会发布一连串的事件,这些事件都是抽象类ApplicationEvent的子类如果对事件感兴趣,实现接口ApplicationListener,并在定义文件中定义实现该接口的一个Bean实例如果发布事件通知ApplicationListener的实例,可以使用ApplicationContext的publishEvent()方法,publicinterfaceApplicationListenerextendsEventListenervoidonApplicationonEvent(ApplicationEventevent);,34,示例,35,运行结果,36,总结,熟悉BeanFactory与ApplicationContext的运用了解Spring容器进行各种Bean的配置与管理了解ApplicationContext的特性,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!