深入Spring源码专题(5)

101 阅读2分钟

这是我参与2022首次更文挑战的第8天,活动详情查看2022首次更文挑战

控制反转的类型

  1. setter注入与构造函数注入

    setter注入还允许即时交换针对不同实现的依赖项,而无须创建父组件的新实例;setter注入最大的好处是,它是注入机制中侵入性最小的。根据使用情况选择注入类型。基于setter的注入允许唉不创建新对象的情况下交换依赖项,并且还可以让类选择适当的默认值,而无须显示注入对象,当将依赖项传递给组件和设计不可变对象时,构造函数注入是一个不错的选择,构造函数注入确保向组件提供所有的依赖项,但大多数容器也都提供一种机制确保这一点,不好的点是使代码与框架产生耦合。

Spring控制反转

Spring实现的核心是基于依赖注入,当Spring自动将协作者提供给依赖对象时,是使用依赖注入实现的,在基于Spring的应用程度中,始终优先使用依赖注入将协作者传递给依赖对象,而不是让依赖对象通过查找获取协作者。Spring依赖注入机制如下图所示。

虽然依赖注入时将协作者和依赖对象连接在一起的首选机制,但有时还需要使用依赖查找来访问依赖对象。在许多情况下,Spring无法通过使用依赖注入来自动连接所有应用程序组件,并且必须使用依赖查找来访问初始组件组。Spring的IoC容器有一个功能就是在自己的依赖注入容器和外部依赖查询容器之间充当适配器。

BeanFactory

Spring的依赖注入容器的核心是BeanFactory接口,BeanFactory负责管理组件,包括依赖项以及他们的生命周期。