什么是IOC容器,以及IOC的创建过程
1、基本概念
1、IOC(Inverse Of Controll,控制反转):就是原来代码里面需要自己手动创建的对象,依赖,反转给Spring来帮忙实现。我们需要创建一个容器,同时需要一种描述来让容器知道要创建的对象与对象之间的关系。
2、在Spring中BeanFactory就是IOC容器,在Spring初始化的时候,创建容器,并将需要创建对象和对象的关系(xml,注解)通过BeanDefinitionReader加载到BeanDefinition中并保存在BeanDefinitionMap中,然后再由IOC容器创建bean对象.
2、两种bean的注册方式
方法1:通过@Bean+@Configuration的方式直接定义要创建的对象与对象的关系
方式2:通过@Component定义类,这种方式必须使用@ComponetScan定位Bean扫描路径
3、IOC的创建
1、在Spring中BeanFactory就是IOC容器,在Spring初始化的时候,创建容器,并将需要创建对象和对象的关系(xml,注解)通过BeanDefinitionReader加载到BeanDefinition中并保存在BeanDefinitionMap中,在这个过程中会让BeanDefinitionProcesser(Bean的定义信息的后置处理器)进行增强,然后再由IOC容器创建bean对象.
4、Bean的生命周期(面试官顺着问题往下问的拓展)
1、bean的实例化:spring启动后,会查找和加载需要被spring管理的Bean,并且实例化
2、bean的属性注入(bean的初始化):bean被实例化后将Bean的引入河值注入到bean的属性中
1、查看是否调用一些aware接口,比如BeanFactoryAware,BeanFactoryAware,ApplicationContextAware接口,分别会将Bean的名字,BeanFactory容器实例,以及Bean所在用的上下文引用传入给Bean
2、在初始化之前,会查看是否调用了BeanPostProcessor的预初始化方法,可以对bean进行扩展
3、调用InitializingBean的afterPropertiesSet()方法:如果Bean实现了InitializingBean接口,spring将调用他们的afterPropertiesSet()方法,类似的,如果Bean使用init-method生命了初始化方法的话,这个方法也会被调用。
4、初始化成功之后,会查看是否调用BeanPostProcessor的初始化后的方法:如果Bean实现了BeanPostProcessor接口,spring就将调用他们的postprocessAfterInitialization()方法。可以对bean进行扩展
5、bean的正常使用:可以被应用程序正常使用了,他们将驻留在上下文中,直到应用的上下文被销毁
6、bean的销毁:调用DisposableBean的destory()方法:如果Bean实现DisposableBean接口,spring将用他的destory()方法,相同的,如果Bean使用了destory-method生命销毁方法,该方法也会被调用。(但由于bean也分为单例和多例,单例bean会随着IOC容器的销毁而销毁,多例的bean不会随着IOC容器的销毁而销毁,他是通过JVM里面的垃圾回收器负责回收)
什么是 IOC,简单讲一下 Spring IOC 的实现机制?
最新推荐文章于 2024-09-10 23:20:35 发布