很多的时候,我们讲spring,都会提到spring的核心功能,IOC和DI。即控制反转和依赖注入。
很多的文章,在提到两者的时候,更多的是把他们等同起来看,即普遍认为ioc就是di,di也就是ioc。
其实不然,可以这样子认为:通常情况下,我们的程序都不可能完全的由一个类来完成一整个复杂的业务,所以当我们在一个业务类A要调用另外一个业务类B的时候,我们都是手工的去new 一个对象出来。这个是我们自己来做的。由程序员来控制这个被调用类B的使用情况和生命周期。现在有了spring容器,我们可以把这样的操作权交给spring容器来帮我们完成。即我们把需要调用的业务类B通过xml配置的方式,来帮我们new一个实例对象。这就是控制反转
依赖注入是这样的,上面讲到了A要引用B,需要我们在某个时候时刻手工来setter一下,即
这样我们就把B的对象实例化到A中了,但是我们可以通过spring容器来帮我们完成这一步,
这样子我们就把B注入到了A中
谢谢我讲完了
Thx
很多的文章,在提到两者的时候,更多的是把他们等同起来看,即普遍认为ioc就是di,di也就是ioc。
其实不然,可以这样子认为:通常情况下,我们的程序都不可能完全的由一个类来完成一整个复杂的业务,所以当我们在一个业务类A要调用另外一个业务类B的时候,我们都是手工的去new 一个对象出来。这个是我们自己来做的。由程序员来控制这个被调用类B的使用情况和生命周期。现在有了spring容器,我们可以把这样的操作权交给spring容器来帮我们完成。即我们把需要调用的业务类B通过xml配置的方式,来帮我们new一个实例对象。这就是控制反转
依赖注入是这样的,上面讲到了A要引用B,需要我们在某个时候时刻手工来setter一下,即
A a =new A();
B b = new B();
a.setB(b);
这样我们就把B的对象实例化到A中了,但是我们可以通过spring容器来帮我们完成这一步,
<bean id="b" class="com.B"></bean>
<bean id="A" class="com.A">
<property name="b" ref="b"></property>
</bean>
这样子我们就把B注入到了A中
谢谢我讲完了
Thx