spring-Ioc-基础知识

本文详细介绍了Ioc的定义,包括依赖注入原理和Spring中的IocServiceProvider工作流程,涉及构造方法注入、setter方法注入和Ioc容器的使用方式,如XML配置、元数据和直接编码。
摘要由CSDN通过智能技术生成

文章目录

目录

文章目录

前言

一、定义

二、依赖注入方式

三、Ioc Service Provider

总结


前言

主要介绍了Ioc的定义、依赖注入方式、Ioc Service Provider。


一、定义

  • Ioc全程Invertion of control依赖反转,也可以称为依赖注入,是一种帮助我们解耦各业务对象之间依赖关系的对象绑定方式
  • Spring的Ioc容器比如BeanFactory或者ApplicationContext实现创建对象和依赖注入等Ioc Service Provider功能
  • 容器主要分为两个阶段
    • 第一阶段是容器初始化,通过BeanDefinitionRead或者其他方法解析配置信息获取所有被控对象以及对象依赖关系信息存在beandefinition里,然后注册到beandefinitionregistry,然后可以通过BeanFactoryPostProcessor进行初始化阶段的扩展,比如通过properties文件内容修改bean的一些property值,或者将自定义的scope或者自定义PropertyEditor注入到BeanDefinition里后续实例化bean阶段使用
    • 第二阶段时,bean的实例化阶段,首先会根据beandefinition信息进行,反射或者cglib动态生成字节码创建子类;然后通过beanwrapper进行属性注入,PropertyAccessor实现统一的属性注入+PropertyEditor实现字符串到对象类型转变;然后BeanPostProcessor前置进行Aware接口依赖注入,然后看看是不是InitilizingBean有没有配置init-method;然后BeanPostProcessor后置处理;然后注册DisposableBean或者destroy-method销毁方法;设置销毁的时间;投入使用;容器关闭或者自定义时刻对象会被销毁

二、依赖注入方式

  • 构造方法注入B
    • 在被注入对象的构造方法参数中获取被依赖对象并被创建被依赖实例对象
    • 对象构造完成时,被依赖对象就已经创建好并处于就绪态
    • 被依赖对象只会新建一次,整个创建过程应该由Ioc service provider全程管理
  • setter方法注入A
    • 通过在被注入类里设置setter方法,创建出一个被注入对象实例后,只有需要使用被依赖类时,才会主动调用setter方法让Ioc service provider创建被依赖类
  • 接口注入C
    • Ioc service provider实现一个接口,这个接口里面有一个方法传入的参数是被依赖类对象实例

三、Ioc Service Provider

  • Spring中的Ioc容器实现其功能
  • 职责
    • 创建业务对象
    • 业务对象之间的依赖绑定
  • Ioc service provider怎么获得对象里的依赖关系
    • 直接编码
      • 在程序中编码创建被依赖对象并注入被注入对象
    • 配置文件
      • XML配置文件
    • 元数据
      • 注解+代码处理


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值