springframework(三)Bean的基本管理
来源:互联网 发布:看火影忍者的软件 编辑:程序博客网 时间:2024/05/29 03:16
Bean的基本管理
1、BeanFactory、ApplicationContext的关系
ApplicationContext是居于BeanFactory而建立的,也具有读取Bean定义文件,维护Bean之间依赖关系等功能,除此之外,ApplicationContext还提供了一个应用程序所需的更完整的框架功能
2、BeanFactory所拥有的方法
BeanFactory负责读取Bean定义文件:管理对象的加载、生成;维护Bean对象与Bean对象之间的依赖关系;负责Bean的生命周期。对于简单的应用程序来说使用BeanFactory就已经足够来管理Bean了,在对象的管理上已经可以获得很多的方便性,BeanFactory接口包括了6中方法可以调用:
l Boolean containsBean(String):测试BeanFactory中是否包含指定名称的Bean
l Object getBean(String):指定Bean定义文件中设置的名称,可以取得相对应的Bean实例
l Object getBean(String,Class):指定Bean定义文件中设置的名称,取得相对应的Bean的实例,并转换(Cast)指定的类
l Class getType(String name):指定Bean定义文件中设置的名称,取得相对应的Bean的Class实例
l Boolean isSingleton(String):指定Bean定义文件中设置的名称,测试指定的Bean之scope是否为Singleton
String[] getAliases(String):指定Bean定义文件中设置的名称,取得该Bean所有的别名
3、ApplicationContext所扩展的功能
例如:
l 提供更方便地取得资源文件的方法
l 提供解析文字消息的方法
l 支持国际化消息
l ApplicationContext可以发布事件,对事件感兴趣的Bean可以接收这些事件
4、ApplicationContext获取常用的类
l Org.springframework.context.support.FileSystemXmlApplicationContext
可以指定XML定义文件的相对路径或绝对路径读取定义文件
l Org.springframework.context.support.ClassPathXmlApplicationContext
从Classpath设置路径中读取XML定义文件
l Org.springframework.web.context.support.XmlWebApplicationContext
在Web应用程序中的文件架构中,指定相应位置读取定义文件。
ApplicationContext可以读取多个Bean定义文件,可以在实例化ApplicationContext的实现类的时候以数组的方式指定Bean定义文件的位置,例如:
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{“aaa.xml,bbb.xml”})
5、Bean的实例化
A、使用默认的构造方法,也就是没有参数的构造方法来建立Bean实例
<bean id=”hello” class=”com.itcast.HelloBean”/>
B、通过静态工厂方法来取得某个对象,好处是调用静态工厂方法的对象不用了解对象建立的细节例如:
- package com.itcast.init;
- public interface IHello {
- public void hello();
- }
假设我们设计了一个Factory工厂类取得Ihello实例的细节是由他的createhello方法负责
- package com.itcast.init;
- public class HelloFactory {
- public static IHello createHello(){
- return new IHello(){
- public void hello(){
- System.out.println("this is test");
- }
- };
- }
- }
- <bean id="helloBox" class="com.itcast.init.HelloFactory" factory-method="createHello">
- </bean>
C、通过工厂Bean实例的工厂方法来取得Bean实例
- <bean id="some" factory-bean="factoryBean" factory-method="createInstance">
- </bean>
6、Bean的scope
从BeanFactory或ApplicationContext取得的实例被默认为Singleton,也就是默认每一个Bean名称只维持一个实例。使用Singleton模式产生单一实例对于单线程程序来说没啥问题,但是对于多线程的问题来说我们必须注意线程安全问题,防止多个线程同时存取公用资源引发资料不同步的问题,通常singleton的Bean都是无状态的。
相对来说我们就可以将bean的scope设置成prototype类型的,使得每次指定名称来取得Bean的时候,都会产生一个新的实例。
注意spring的Singleton主要是针对“一个IOC容器维持一个Bean实例”而言的。与设计模式上谈到的Singleton不同,设计模式上谈到的Singleton,是指对每一个ClassLoader所载入的类产生一个实例。
在spring2.0中scope属性除了可以设置成如上两种,还可以设置成reqeust,session,globalSession,分别表示请求阶段,会话阶段与基于Portlet的Web应用程序会话阶段。
7、Bean的生命周期
l Bean的建立:由BeanFactory读取Bean定义文件,并生成各个Bean实例
l 属性注入:执行相关的Bean属性依赖注入
l BeanNameAware的setBeanName():如果Bean类实现了BeanNameAware接口,执行他的setBeanName方法
l BeanFactoryAware的setBeanFactory():如果Bean类实现BeanFactoryAware接口,则执行他的SetBeanFactory方法
l BeanPostProcessors的processBeforeInitialization()
l InitializingBean的afterPropertiesSet()
l Bean定义文件中定义init-method:可以在Bean定义文件使用它设置方法名称
l BeanPostProcessors的processaAfterInitialization()
l DisposableBean的destory():容器关闭的时候,如果Bean类实现了DisposableBean接口,则执行destory方法
l Bean定义文件中定义 Destory-method:设置容器关闭时候执行的方法。
8)、Bean的定义的继承
如果Bean设置了abstract=“true”属性,这个bean将不能被实例化。可以指定parent属性,指定当前bean继承哪个已经定义的Bean。继承策略类型java中类的继承。
- springframework(三)Bean的基本管理
- springframework(三)Bean的基本管理
- Spring Bean基本管理
- Spring Bean基本管理
- 巴巴运动网学习笔记三之产品分类实体对象基本属性的JPA映射,用泛型技术对产品分类的业务管理Bean抽象,单元测试产品分类的业务管理Bean.,重载业务管理Bean的删除方法,
- 【呆子谈管理】:管理的基本思维(三)
- Spring内核研究-管理bean之间的关系三(自动装配)
- Beginning Spring学习笔记——第2章(三)Spring的Bean管理
- Spring中管理Bean的三种方法
- Spring管理Bean的三种创建方式
- spring管理bean的三种创建方式
- spring三种实例化Bean的方式和管理Bean的作用域和Bean的生命周期
- springframework(四)Bean的依赖设置与集合对象的处理
- springframework(四)Bean的依赖设置与集合对象的处理
- Spring-Bean的初始化(init方法和实现org.springframework.beans.factory.InitializingBean接口)
- Spring的Bean的生命周期(三)
- spring的bean管理方式(xml)
- Spring的bean管理(注解)
- Axure学习记录
- Bootstrap初入之环境搭建
- JForum论坛搭建指南
- shell编程笔记
- Linux环境下Tomcat和JAVA(jdk)安…
- springframework(三)Bean的基本管理
- 【杭电】[1280]前m大的数
- StartUML如何画“不折弯”的直线
- 论文中国自动生成参考文献,按格式添加
- MD5加密“破解”在.NET平台实现最基本的理解
- 【转】.net中快捷键的使用
- GDI+在绘制验证码中的使用
- windows与VMware ubuntu虚拟机实现文件共享
- JAVA.WEB笔记