转载
http://blog.csdn.net/it_man/article/details/4402245
IOC (控制反转)相信有很多人都知道,但是有些人只知道ioc就是控制反转,但是具体的意思还是不明白
所以当别人问你ioc是什么的时候你会回答控制反转,但是在深入问你的时候你却一脸懵逼
我们在处理业务的时候可能会用到多个对象,可能当某一个对象要引用到其他对象的时候我们都要new一个object出来,这样的话你会发现对象之间的耦合度高了,而ioc就是spring容器来实现这些相互依赖关系对象的创建,你只需要关注业务逻辑就可以了,不需要心我这个对象自己要怎么得来,
简单点就是比如一个例子,也是转载博客里面给的一个例子
你想有个女朋友,首先你得找个女孩子,然后要她的联系方式,然后想尽一切办法去追,你要自己设计每一个环节,传统开发也是如此,你一个对象中要引入另一个对象就必须得到他,new一个,使用完后还得销毁掉(如connection),对象会始终和其他的接口或者类耦合起来
而spring的ioc就不一样,他就相当于一个媒人,你要把你女朋友的要求说出来,他会自己帮你去找去匹配,如果不合适则我们会抛出异常,整个匹配过程你完全不用管
,所有类的创建,销毁都由spring控制,而不是你自己
ioc是在系统运行中向某个对象动态的添加其他对象,比如对象a需要操作数据库,那么我们只要告诉spring我们需要connection对象就可以了,spring会自动分配connection给我们,至于他怎么分配怎么构造那么我们就不需要管了
在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。关于反射的相关资料请查阅java doc。
反射
http://blog.csdn.net/sahadev_/article/details/70908086