依靠注入(Dependency Injection)和控制反轉(Inversion of Control)是同一個概念。具體含義是:當某個角色(可能是一個java實例,調用者)需要另一個角色(另一個Java實例,被調用者)的協助時,在傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在Spring里,創建被調用者的工作不再由調用者來完成,因此稱為控制反轉;創建被調用者實例的工作通常由Spring容器來完成,然后注入調用者,因此也稱為依靠注入。
//定義Person接口 public interface Person { //Person接口里定義一個使用斧子的方法 public void useAxe(); }
然后是Axe的接口
//定義Axe接口
public interface Axe { //Axe接口里有個砍的方法 public void chop(); } Person的實現類
//Chinese實現Person接口
public class Chinese implements Person { //面向Axe接口編程,而不是具體的實現類 private Axe axe; //默認的構造器 public Chinese() {} //設值注入所需的setter方法 public void setAxe(Axe axe) { this.axe = axe; } //實現Person接口的useAxe方法 public void useAxe() { System.out.println(axe.chop()); } } Axe的第一個實現類
//Axe的第一個實現類 StoneAxe
public class StoneAxe implements Axe { //默認構造器 public StoneAxe() {} //實現Axe接口的chop方法 public String chop() { return "石斧砍柴好慢"; } } 下面采用Spring的配置文件將Person實例和Axe實例組織在一起。配置文件如下所示: