NO.5 Spring IOC 对象的实例化过程
来源:互联网 发布:tomcat apache 编辑:程序博客网 时间:2024/06/03 17:41
NO.5 Spring IOC 对象的实例化过程
这里,我们需要知道一个名词——DI(依赖注入)。
需要一个对象,就让工厂注入进去一个对象,需要一个service,就让IOC注入一个service。
IOC就是一个大工厂,专门用来生产对象的,将图纸 (Java的class文件)给工厂,工厂就能负责建造。将class文件(图纸)配置到spring的配置文件——应用的上下文applicationContext.xml,实现向工厂一扔,自动创建。那么bean是如何创建的呢?
在ApplicationContext之前,我们使用的是BeanFactory。
如图是ApplicationContext类的结构
BeanFactory与ApplicationContext的相同和区别:
1>都是接口,用来定义规范,ApplicationContext也是继承于BeanFactory
2>BeanFactory定义了类产生的原始过程,ApplicationContext采用适用现代计算机产生bean的过程。
3>实例化过程不同
BeanFactory在加载bean,需要做出判断,当获取对象时才实例化对象(使用的时候才去实例化),优点:节省系统内存,缺点需要的时候才去生产,浪费时间(eg:手机中App)
ApplicationContext当容器初始化完成之后就实例化对象(工厂一旦创建成功,就有实例化对象),不管使用不使用,对象已经生产完成了,优点:性能好,缺点:容器初始化后即完成对象生产,占用内存(eg:电脑,服务器(8G标配))
那么我们如何验证对象是什么时间被生产出来的呢?
一个类被实例化,就要调用它的构造方法。
package com.xt.spring.ioc.ore;public class Apple extends Fruit{ //构造方法,输出一个日志 public Apple(){ System.out.println("苹果已经生产出来了"); } public void eat(){ System.out.println("我是苹果"); }}
测试类:
package com.xt.spring.ioc.test;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.xt.spring.ioc.ore.Apple;public class IOCTest { private ApplicationContext ioc0; //IOC容器与对象之间有一个过程 @Before public void iocInit(){ ioc0 = new ClassPathXmlApplicationContext("spring/applicationContext.xml"); //打印一个标记,苹果是否已经创建 System.out.println("不知道苹果是否创建出来??"); //如果已经被创建,则会打印构造方法中的日志 } @Test public void testIoc(){ //获取而非创建对象 Apple a0 = ioc0.getBean("apple",Apple.class); a0.eat(); }}
可以看到控制台打印出的日志,显然工厂在初始化完成之后就已经完成了对象的创建。
综上所知,我们可以总结IOC容器中对象的实例化过程:
1,IOC容器实例化
2,IOC实例化完成之后,立刻开始实例化IOC容器中配置的javabean
3,使用javabean
容器未创建之前,未创建java bean ,初始化完成之后,java bean 即被创建,在实例化之前
- NO.5 Spring IOC 对象的实例化过程
- Spring IOC容器中Bean的实例化过程
- Spring的IoC实例
- Spring--IoC容器对非lazy-init的singleton Bean实例化过程
- 【Spring】——IOC配置对象实例
- Spring的IOC简单实例
- spring实例化IOC容器
- 实例化Spring IoC容器
- 实例化spring IoC容器
- 对象的实例化过程
- 实例化Spring Ioc容器的三种方式
- Spring IoC容器实例化bean的三种方式
- Spring-- Ioc 容器Bean实例化的几种场景
- Spring中IoC的入门实例
- Spring中IoC的入门实例
- Spring中IoC的入门实例
- Spring中IoC的入门实例
- Spring中IoC的入门实例
- 使用第三方前端ui框架就是坑,我坚持了7年!
- Mybatis整合SQLite
- 更改checkbox默认样式、radio默认样式,CSS实现自定义
- springboot启动报错:org/springframework/expression/ParserContext
- 送给自己的经典语录
- NO.5 Spring IOC 对象的实例化过程
- java性能监控工具MoSKito学习--综述和说明
- 远程Linux上部署JDK和Tomcat
- test
- php 面试题详解
- 用ajax上传文件
- 使input文本框随内容变化改变长度
- 关于使用安卓系统自带的相机进行拍照,把照片存到系统图库gallery中
- Sublime Text 3快捷键汇总