Spring学习----- BeanFactory(核心)
来源:互联网 发布:mac上好用的板绘软件 编辑:程序博客网 时间:2024/05/18 11:28
Spring 作为一种IOC容器最大的目的就是降低组件与组件之间的依赖关系。而BeanFactory作为整个Spring IOC容器的核心,使用了一种统一的方法来装配所有的应用对象,通过Java的反射机制和依赖注入(Dependency Injection)来实现这一装配过程,使受之管理的对象无需知道Spring的存在(受管对象甚至不用import 任何Spring的class),同时也降低了组件间的依赖程度,同时受管对象的生命周期由BeanFactory来统一管理,开发者就不用实现大量的自制的工厂Singleton。
在Spring中,BeanFactory
是IoC容器的核心接口。它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖.BeanFactory
提供了配制框架及基本功能,而ApplicationContext
则增加了更多支持企业核心内容的功能。ApplicationContext
完全由BeanFactory
扩展而来,因而BeanFactory
所具备的能力和行为也适用于ApplicationContext
。ApplicationContext继承BeanFactory
注:以下那些受Spring IOC容器即BeanFactory控制管理的对象简称bean对象
一. BeanFactory
作为整个Spring IOC容器核心Interface BeanFacotry被放在包 org.springframework.beans.factory中,这是一个非常简单的接口,如果Spring现有的BeanFactory的实现无法满足你的要求(这种情况应该不多J),你可以很容易创建自己的一个实现。
- public interface BeanFactory {
- Object getBean(String name) throws BeansException;
- Object getBean(String name, Class requiredType) throws BeansException;
- boolean containsBean(String name);
- boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
- String[] getAliases(String name) throws NoSuchBeanDefinitionException;
- }
这就是BeanFactory的代码,总共有5个函数所组成,2个getBean函数提供根据String类型的名称来寻找受BeanFactory的bean对象,区别在于其中一个函数提供了类型检测的功能,来检测取得bean对象是否为所需的类型,如果类型不符将抛出一个BeanNotOfRequiredTypeException的异常。
函数isSingleton 则用来判断BeanFactory的bean对象被定义为Singleton还是Prototype。如果被定义为Singleton的话,在BeanFactory的生命周期内,所有对getBean的调用将返回一个bean对象的实例引用,如果是Prototype则每次调用getBean对会创建一个独立的对象实例。
如果一个bean对象被定义了别名,那么函数getAliases就可以用来取得该bean对象的所有别名。
Spring IoC容器的实例化非常简单,如下面的例子:
Resource resource = new FileSystemResource("beans.xml");BeanFactory factory = new XmlBeanFactory(resource);
... 或...
ClassPathResource resource = new ClassPathResource("beans.xml");BeanFactory factory = new XmlBeanFactory(resource);
... 或...
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"applicationContext.xml", "applicationContext-part2.xml"});// of course, an
ApplicationContext
is just aBeanFactory
BeanFactory factory = (BeanFactory) context;
转自:http://ivorytower.iteye.com/blog/183403
- Spring学习----- BeanFactory(核心)
- Spring BeanFactory学习
- [学习笔记] Spring beanfactory applicationcontext
- 动态代理,Spring两大核心知识BeanFactory、AOP框架!
- spring核心类极其作用:ApplicationContext,BeanWrapper,BeanFactory,ApplicationListener,InitializingBean
- Spring核心之BeanFactory 一张图看懂getBean全过程.
- Spring核心之BeanFactory 一张图看懂getBean全过程
- spring 核心与源码解析(1):IoC之BeanFactory
- 对Spring的BeanFactory的学习小节
- 对Spring的BeanFactory的学习小节
- Spring IOC 学习笔记(二) BeanFactory
- Spring的BeanFactory的学习小节
- 对Spring的BeanFactory的学习小节
- Spring学习笔记--- BeanFactory简单模拟
- Spring 学习日记(二)BeanFactory小议
- Spring学习(十)BeanFactory VS ApplicationContext
- Spring学习历程---BeanFactory与ApplicationContext介绍
- Spring源码学习之BeanFactory接口简述
- 微软学术搜索项目 10个版本的历程
- pku2244 Eeny Meeny Moo
- 廊坊日报《廊坊日报:主角·导演·谢幕-米老师的教学三部曲》
- vc实现窗口全屏的一些方法
- Ajax系列之三——服务器客户端交互
- Spring学习----- BeanFactory(核心)
- Jquery Ajax调用后台页面方法
- DoNet有用的文章链接
- 关于全局变量思考
- iOS的绘图机制二 - iOS,iPad,iPhone,Objective-c
- git windows下搭建环境
- Debugging with GDB
- 系统设计三原理
- Android adt 20漏洞