Public Person{ ... public void drive(){ Car toyota=new Car("TOYOTA"); toyota.掛檔; toyota.踩油門; toyota.打方向; } }
Public Person{ private ICar car; public Person(ICar onecar){ car=onecar; } public void drive(){ car.掛檔; car.踩油門; car.打方向; } }
這個時候,進行注入而且調用的過程,就很簡單了,以下:
Toyota toyota=new Toyota(); Person boy=new Person(toyota); boy.drive();
注:這裏咱們假定,Toyota類是ICar接口類的一個具體實現。
Public Person{ private ICar car; public Person(){ } public void drive(){ car.掛檔; car.踩油門; car.打方向; } public ICar getCar(){ return this.car; } public void setCar(ICar onecar){ car=onecar; } }
這個時候,進行注入而且調用的過程,就變成以下所示:
Toyota toyota=new Toyota(); Person boy=new Person(); boy.setCar(toyota); boy.drive();
至此依賴注入的概念應該比較清楚了,再來看看在Spring中如何實現IoC的,看看Spring如何做爲一個成熟的IoC容器,Spring中其實主要經過兩個概念來實現IoC,首先經過XML配置文件,將對象和依賴對象都配置到某個XML文件中,固然該XML文件須要符合Spring指定的規範,而後經過架構中的BeanFactroy類,來自動實現上文所述注入過程,仍是以boy與toyota爲例,以下:
首先,Person類仍是同樣的,
而後xml配置文件增長點東西-(假定爲bean.xml):
html
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="oneCar" class="Toyota"> <!-- Toyota類是ICar的一個實現--> </bean> <bean id="onePerson" class="Person"> <!--本例以屬性方式注入爲例 --> <property name="car"> <ref bean="oneCar"></ref> </property> </bean> </beans>
最後,調用的過程,就變成以下:
java
BeanFactory factory=new XmlBeanFactory("bean.xml"); Person boy=(Person )factory.getBean("onePerson"); boy.drive();
--不知是否講清楚了,呵呵 spring
參考資料:http://www.javago.net/spring/26.html 回答者: szmneo|
依賴注入:並非那麼複雜.
A類和B類,若是A要用到B
在A類中加一個setB()就OK了,再經過spring的IOC容器實例化好的對象用屬性注入就OK了 設計模式