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了 设计模式