Spring IOC实现原理 : 关于bean实例我自己的理解;

cpddzz / 2023-07-31 / 原文

1、系统根据bean的配置信息(xml文件,groovy等),经过资源加载、解析配置后生成了一个 关于bean的容器。

2、bean容器会根据配置信息 生成一个bean实例;

3、将bean实例  和  一些其他配置信息生成的一些特殊的bean实例  都放入到bean的容器中;

4、其他的类需要调用这些bean的时候,根据申请,从bean的容器中通过名称和类型去获取自己需要的bean实例。

理解:

关于ioc的作用主要体现在spring 容器中,用于存放一些还没被用到的bean实例,这些bean实例会在spring一启动的时候就被建立,并设置成懒加载。

spring容器的另一个ioc体现在于,spring容易会统一管理这些bean实例,我们只需要在使用的时候直接调用就好了。

 关于bean的生命周期:

bean实例在spring启动时产生,直到如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory() 方法将 Spring 中的 Bean 销毁;如果在配置文件中通过 destory-method 属性指定了 Bean 的销毁方法,则 Spring 将调用该方法对 Bean 进行销毁。

关于依赖注入:

应用程序代码从Ioc Container中获取依赖的Bean,注入到应用程序中,这个过程叫 依赖注入(Dependency Injection,DI)

所以说控制反转是通过依赖注入实现的,其实它们是同一个概念的不同角度描述。通俗来说就是IoC是设计思想,DI是实现方式

在依赖注入时的方式:构造器方式,@Autowired, @Resource, @Qualifier... 同时Bean之间存在依赖

 

图片来自网上: