@
yanerweb 好比如你有两个类:
class A {
private B b = new B();
}
class B {
public void sayHello(){
System.out.println("hello");
}
}
这是传统的实现,A类中要调用B类的方法,必须有B的实例,所以A里面就创建了一个B的实例
下面说一下ioc是什么:
如果用ioc 依赖注入的思维来想这个,那么A类是依赖与B类的,因为这个地方没有了B类,new B将会不成立,虽然有了依赖注入,这个地方也会不成立,所以和ioc一起使用的就是接口:
class A {
private IB b;
}
interface IB{
public void sayHello();
}
class B implements IB{
public void sayHello(){
System.out.println("hello");
}
}
现在这样A类就不依赖与B类了,而是依赖与IB接口,现在要做的就是,把B的实例注入到A的b属性中
spring ioc在这段代码中的作用就是创建B实例,然后在创建A实例的时候将B的实例设置到A的属性b之中.
注意,这里的B实例,A实例并不是类似与上面那样我们手动new一个,而是通过spring 的BeanFactory创建的.