IoC:控制反转——Inversion of Control , IoC 是一种设计模式。
控制反转是一个重要的面相对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。它一般分为两种类型,依赖注入(DI:Dependency Injection)和依赖查找(DL:Dependency Lookup)。
IoC最大的好处是什么?
因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拔(有点象USB接口和SCSI硬盘了)。
由于依赖注入应用比较广泛,所以可将依赖注入(Dependency Injection)和控制反转(Inversion of Control)看成同一概念。
具体含义:当某个角色(可能是一个 java实例,调用者)需要另一个角色(另一个java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中,创建被调用者的工作不再由调用者来完成,因此成为控制反转;创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也称依赖注入。
设值注入是指通过setter方法传入被调用者的实例。这种注入方式简单、直观,因而在Spring的依赖注入里大量使用。看下面代码,是GreetingService接口
GreetingServiceImpl是GreetingService的实现类:
Spring的配置文件:
主程序: