Spring IoC 的工作流程

本文介绍了Spring框架中的InversionofControl(IOC)概念,包括其核心思想、Bean的声明方式(如XML标签、注解),以及SpringIOC的工作流程,涉及初始化、依赖注入和Bean使用阶段。
摘要由CSDN通过智能技术生成

概况

        IOC 是什么

        Bean 的声明方式

        IOC 的工作流程


 IOC 是什么

        IOC 的全称是 Inversion Of Control, 也就是控制反转,它的核心思想是把对象的管理权限交给容器。

        应用程序如果需要使用到某个对象实例,直接从 IOC 容器中去获取就行,这样设计的好处是降低了程序里面对象与对象之间的耦合性。,使得程序的整个体系结构变得更加灵活。


Bean 的声明方式       

         Spring 里面很多方式去定义 Bean,如下图,比如 XML 里面的标签、@Service、

@Component、@Repository、@Configuration 配置类中的@Bean 注解等等。 Spring 在启动的

时候,会去解析这些 Bean 然后保存到 IOC 容器里面。

        


IOC 的工作流程

        Spring IOC 的工作流程大致可以分为两个阶段。

第一个阶段,就是 IOC 容器的初始化

        这个阶段主要是根据程序中定义的 XML 或者注解等 Bean 的声明方式 (如下图)通过解析和加载后生成 BeanDefinition,然后把 BeanDefinition 注册到 IOC 容器。

        通过注解或者 xml 声明的 bean 都会解析得到一个 BeanDefinition 实体,实体中包含这个

bean 中定义的基本属性。 最后把这个 BeanDefinition 保存到一个 Map 集合里面,从而完成了

IOC 的初始化。 IOC 容器的作用就是对这些注册的 Bean 的定义信息进行处理和维护,它是 IOC

容器控制反转的核心。


第二个阶段,完成 Bean 初始化及依赖注入

        然后进入到第二个阶段,这个阶段会做两个事情:

                 1. 通过反射针对没有设置 lazy-init 属性的单例 bean 进行初始化。

                 2. 完成 Bean 的依赖注入


第三个阶段,Bean 的使用 

        通常我们会通过@Autowired 或者 BeanFactory.getBean(),从 IOC 容器中获取指定的 bean 实例。

        另外,针对设置 layy-init 属性以及非单例 bean 的实例化,是在每次获取 bean 对象的时候,调用 bean 的初始化方法来完成实例化的,并且 Spring IOC 容器不会去管理这些 Bean。

        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring IOC(控制反转)是Spring框架的核心特性之一,它通过管理对象的创建和依赖注入,实现了对象之间的解耦和灵活性。下面是Spring IOC工作流程: 1. 配置:首先,您需要创建一个 Spring 配置文件,通常是 XML 格式的。这个配置文件中包含了Spring容器需要了解的关于对象的定义和配置信息,比如对象的类名、依赖关系、属性值等。 2. 加载:Spring IOC 容器负责加载和解析配置文件,读取配置信息并创建相应的对象。 3. 实例化:Spring IOC 容器根据配置文件中的定义,使用反射机制实例化对象。这些对象被称为 Spring Bean。 4. 依赖注入:一旦对象被实例化,Spring IOC 容器会检查对象的依赖关系,并自动将依赖的对象注入到相应的属性中。这种依赖注入可以通过构造函数、Setter 方法或字段注入来完成。 5. 生命周期管理:Spring IOC 容器管理 Spring Bean 的生命周期。它会在适当的时候调用初始化方法和销毁方法,以确保对象被正确地创建和销毁。 6. 提供 Bean:一旦所有的对象都被创建和初始化,Spring IOC 容器就可以提供这些对象给其他的应用程序组件使用了。 通过这个工作流程Spring IOC 实现了对象的解耦和灵活性。开发人员只需要关注对象的定义和配置,而不需要显式地创建和管理对象。这样可以提高代码的可维护性、可测试性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值