Spring IoC 依赖来源
依赖查找的来源
查找来源
来源 | 配置元数据 |
---|---|
Spring BeanDefinition | <bean id ="user" class="xxx.xxx.User"> |
@Bean public User user() {...} |
|
BeanDefinitionBuilder |
|
单例对象 | API 实现 |
...大约 2 分钟
查找来源
来源 | 配置元数据 |
---|---|
Spring BeanDefinition | <bean id ="user" class="xxx.xxx.User"> |
@Bean public User user() {...} |
|
BeanDefinitionBuilder |
|
单例对象 | API 实现 |
IoC 即控制反转(Inversion of Control,缩写为 IoC)。IoC 又称为依赖倒置原则(设计模式六大原则之一),它的要点在于:程序要依赖于抽象接口,不要依赖于具体实现。它的作用就是用于降低代码间的耦合度。
IoC 的实现方式有两种:
new()
的方式在类内部创建依赖类对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类使用。依赖查找是主动或手动的依赖查找方式,通常需要依赖容器或标准 API 实现。
IoC 依赖查找大致可以分为以下几类:
此外,根据查找的 Bean 对象是单一或集合对象,是否需要延迟查找等特定常见,有相应不同的 API。
单一类型依赖查找接口- BeanFactory
DI,是 Dependency Injection 的缩写,即依赖注入。依赖注入是 IoC 的最常见形式。依赖注入是手动或自动绑定的方式,无需依赖特定的容器或 API。
依赖注入 (Dependency Injection,简称 DI) 是一个过程,其中对象仅通过构造函数参数、工厂方法的参数或对象实例在构造或从工厂方法返回。然后容器在创建 bean 时注入这些依赖项。这个过程基本上是 bean 本身的逆过程(因此得名,控制反转),它通过使用类的直接构造或服务定位器模式自行控制其依赖项的实例化或位置。
使用 DI,代码更干净,当对象具有依赖关系时,解耦更有效。对象不查找其依赖项,也不知道依赖项的位置或类别。结果,您的类变得更容易测试,特别是当依赖关系在接口或抽象基类上时,它们允许在单元测试中使用存根或模拟实现。