IOC容器类对象
来源:互联网 发布:软件外包服务 编辑:程序博客网 时间:2024/05/22 12:07
一、BeanFactory类
BeanFacotry是spring中比较原始的Factory,是类的通用工厂,它可以创建并管理BEAN对象。
Spring为BeanFactory提供了多种实现,最常用的是DefaultListableBeanFactory替代,它最主要的方法就是getBean(String beanName),该方法从容器中返回特定名称的BEAN。
二、ApplicationContext类
ApplicationContext接口,它由BeanFactory接口派生而来,因而提供BeanFactory所有的功能。ApplicationContext以一种更向面向框架的方式工作以及对上下文进行分层和实现继承,ApplicationContext包还提供了以下的功能:
MessageSource, 提供国际化的消息访问
资源访问,如URL和文件
事件传播
BeanFactory类和ApplicationContext类都是IOC容器类,那么它们之间有什么区别呢?
BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean 时才实例化目标Bean;
而ApplicationContext 则在初始化应用上下文时就实例化所有单实例的Bean 。
下面我们通过代码来看一下它们的差别
1.新建几个简单的类,因为只是为了验证获取IOC容器时是否会实例化里面的类,所以在这几个类中我们不做复杂的业务逻辑,只有简单的输出信息
public class A {public A(){System.out.println("A");}}
public class B {public B(){System.out.println("B");}}
public class C {public C(){System.out.println("C");}}
2.在配置文件中对上诉几个类进行注册
<bean id="a" class="com.gec.bean.A"></bean><bean id="b" class="com.gec.bean.B"></bean><bean id="c" class="com.gec.bean.C"></bean>
3.利用BeanFactory类获取IOC容器
public class Test {public static void main(String[] args) {//拿到容器并不实例化里面的bean,直到访问bean时才创建bean的实例//获取资源文件ClassPathResource res=new ClassPathResource("beans.xml");//获取BeanFactory对象DefaultListableBeanFactory beanFactory=new DefaultListableBeanFactory();//拿到BeanFactory的读取器XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(beanFactory);//读取资源文件的内容reader.loadBeanDefinitions(res);}}
输出结果如下图所示,没有输出任何信息,说明获取容器后并没有创建bean类的对象
接下来我们访问bean类并查看输出结果,这时我们看到bean类已经实例化
public class Test {public static void main(String[] args) {//拿到容器并不实例化里面的bean,直到访问bean时才创建bean的实例//获取资源文件ClassPathResource res=new ClassPathResource("beans.xml");//获取BeanFactory对象DefaultListableBeanFactory beanFactory=new DefaultListableBeanFactory();//拿到BeanFactory的读取器XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(beanFactory);//读取资源文件的内容reader.loadBeanDefinitions(res);A a=(A) beanFactory.getBean("a");A a2=(A) beanFactory.getBean("a");B b=(B) beanFactory.getBean("b");}}
4.最后我们尝试用ApplicationContext类来获取IOC容器,可以看到在初始化应用上下文时就实例化容器内所有的bean类了
public class Test2 {public static void main(String[] args) {//一拿到容器就将容器内的所有bean实例化ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");}}
- IOC容器类对象
- 【Spring】IOC容器创建对象
- 方便获取Spring IOC容器中对象的工具类
- 获取IOC容器里的对象
- spring容器IOC创建对象<二>
- IOC容器,创建对象详细解析
- 【Spring】IOC容器--创建对象(六)
- Spring framework(3):IoC(1) IoC 容器&上下文对象
- spring非IOC容器中的对象获取IOC容器中对象的方法
- spring中IOC容器创建对象,对象依赖关系处理
- IoC容器
- IOC容器
- IoC 容器
- Ioc容器
- Ioc容器
- IoC容器
- IOC + 容器
- IoC容器
- 在kernel space调用系统调用的例子
- DB2常用函数一:(字符串)详解
- Android Modbus的实现--Modbus4Android
- Android6.0 移除电池设置
- 关于const的一点个人总结 C++
- IOC容器类对象
- 深入了解startActivity启动流程
- app端UI的制图规范
- 计算几何凸包——NYOJ78圈水池
- 2、替换空格
- 文件的读写 几种常见的方法
- 用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- Zookeeper系列(八)Zookeeper客户端(JAVA)API之节点检查和权限控制
- 详解js中prototype、constructor以及__proto__的关系