关注△mikechen的架构笔记△,十余年BAT架构经验倾囊相授
大家好,我是mikechen。
IOC容器是Spring的核心,而且大厂面试也是经常问到,下面我就来详解IOC容器的作用与原理@mikechen
最新mikechen原创超30万字《阿里架构师进阶专题合集》和《最全大厂面试题及答案总结》,请关注本公众号【mikechen的架构笔记】,后台回复:资料,即可领取。
什么是IOC?
IOC,全称是Inversion of Control,也就是IOC控制反转的意思。
IOC是一种设计思想,它将程序中对象之间的依赖关系,从程序代码本身转移到了外部容器或框架中。
在传统的编程模式中,程序员需要在代码中显式地创建对象并指定对象之间的关系,这样耦合度比较高。
但是,在IOC容器中,创建和管理对象之间的关系是由容器来完成的,程序员只需要声明对象以及它们之间的依赖关系即可。
通过IOC容器解耦后,就变成这样了:
通过IOC容器这种方式,将对象的创建和对象之间的关系从程序员的代码中解耦出来,使得程序更加灵活、易于维护和扩展。
什么是IOC容器?
IOC容器是实现IOC控制反转的框架的核心,它是一种特殊的对象工厂,负责创建、管理和装配对象。
比如大家常用的Spring就是IOC容器框架的一种实现。
在IOC容器中,程序员只需要声明对象以及它们之间的依赖关系,容器就会根据这些声明来创建对象、注入依赖,并管理对象的生命周期。
IOC容器原理
这里我就以Spring为例,Spring中常见的IOC容器有两种:BeanFactory和ApplicationContext。
BeanFactory是Spring框架最基本的IOC容器,提供了基本的Bean的创建、管理、装配等功能。
ApplicationContext是BeanFactory的子接口,也是Spring框架中最常用的IOC容器,它不仅包含BeanFactory的所有功能,而且还提供了其他一些高级特性,例如支持AOP、事务管理、国际化处理等。
Spring框架中的IOC容器的实现都是基于Java反射机制和Java的动态代理技术实现的,能够快速高效地完成Bean的创建、依赖注入和管理。
IOC容器启动的过程可以分为三个阶段:
1.加载配置文件或类,并创建BeanDefinition 在Spring中,BeanDefinition是描述Bean的信息的对象,它包括Bean的类名、作用域、属性、构造函数等信息。
Spring IOC容器会根据配置文件(如XML文件)或注解扫描,解析出各个Bean的定义信息,并将这些信息封装成对应的BeanDefinition对象。
2.注册BeanDefinition到IOC容器中 在Spring中,BeanFactory是IOC容器的顶层接口,它提供了注册和获取BeanDefinition的方法。
Spring IOC容器会将解析出来的BeanDefinition注册到BeanFactory中,供后续的Bean实例化和依赖注入使用。
3.实例化Bean,并注入依赖 在IOC容器启动后,会根据BeanDefinition创建Bean的实例。
在创建Bean实例时,容器会自动解决Bean之间的依赖关系,并将依赖注入到Bean中。
以上
最后送大家一个福利:
送我原创超30万字阿里架构师进阶专题合集。
以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。
需要以上架构专题&面试答案的同学,加我微信即可领取!
添加时备注:资料