spring的依赖注入和控制反转

先看下图:

spring的依赖注入和控制反转_第1张图片

传统方式就是主动创建;例如你看到一种果汁的描述如下:

public class MakeOrange {

	private String water;
	private String sugar;
	private String orange;

你看到了描述后想要喝这种果汁,然后你主动的找到了一个生产机器,然后你把它拿l过来,

public class Orange {
	private MakeOrange ora;
	public MakeOrange getOra() {
		return ora;
	}
	public void setOra(MakeOrange ora) {
		this.ora = ora;
	}
	public String Oranger(){
		String drinks="这是一杯由"+ora.getWater()+","+ora.getSugar()+","+ora.getOrange()+",构成的饮料!";
		return drinks;
	}
}

然后你就开始造果汁了:

 

public String makedrinks(){
		Orange ora=new Orange();
		return ora.Oranger();
	}

你为了喝个果汁,你还要自己去创造个方法区生产,这是不是太麻烦;那我们为什么不找个第三方的人直接给我们果汁呢,

   
   		
   		
   		
   
   
   		
   
BeanFactory ctx = new ClassPathXmlApplicationContext("spring.xml");
		Orange bean = (Orange) ctx.getBean("orange");
		String oranger = bean.Oranger();

这就是被动创建,第三方把我们想要的传递给工厂然后工厂给我们创建了我们的果汁,他怎么创建的,你是没有参与其中的,与你无关,你只是说了你想要的,然后人家给你了;这里的第三方就是Spring容器。

在这个过程中:

1)工厂依赖了你提供的果汁描述,就是她生产你想要的果汁就必须依靠你提供的资源,然后依靠容器把它需要的资源注入进去,这就是依赖注入;

2)控制反转就是从容器角度看这个过程,工厂需要你的资源,然后容器就把你的资源给它了;控制权已经不在你的手里了。

说的直白一些:

就是控制反转(IOC)即把对象的创建权交给spring来配置创建管理,

而依赖注入,则是创建后的对象属性赋值;

 

 

 

你可能感兴趣的:(spring的依赖注入和控制反转)