《Spring-IoC》

让别人为你服务


Inversion of Control(控制反转),别名Dependency Injection(依赖注入)

在IoC场景中,被注入对象和被依赖对象之间通过IoC Service Provider沟通,两者由IoC Service Provider统一管理

被注入对象有三种方式告诉IoC Service Provider需要哪些被依赖对象,即依赖注入的方式

  • 构造方法注入:通过在构造方法中申明被依赖对象的参数列表,IoC Service Provider会检查被注入对象的构造方法,取得依赖对象列表,对象构造完成后,即进入就绪状态,缺点在于依赖对象多的时候,构造列表很长;构造方法无法被继承,且不能设置默认值;依赖对象不同需要不同的构造方法
  • setter方法注入:对于Javabean对象来说,通常用setXXX()设置属性,当前对象只要为依赖对象所对应的属性添加setter方法,就可以通过setter方法将相应的依赖对象设置到被注入对象中,相比于构造注入,这种方法可以在构造完成后再注入
  • 接口注入:不提倡,因为要强制被注入对象实现不必要的接口,处于退役边缘

IoC的附加值:不会对业务对象产生很强的侵入性,对象具有更好的测试性、可重用性、可扩展性,解耦各种业务对象依赖关系额度对象绑定方式

IoC Service Provider

是一个抽象的概念,指代任何将IoC场景中的业务对象绑定到一起的实现,主要有两个职责:业务对象的构建管理依赖绑定

IoC Service Provider有多种方式记录对象之间的对应关系

  • 直接编码:通过程序编码将被注入对象和依赖对象注册到容器中,并确定相互之间的依赖注入关系
  • 配置文件:

BeanFactory

ApplicationContext

注解