IOC的实现原理
IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。
public UserServiceImpl{ UserDao userDao; setUserDao(UserDao userDao){ this.userDao = userDao; } }?这个userDao,不需要UserServiceImpl自己去创建这个UserDao对象,由IOC容器主动根据UserServiceImpl提供的setUserDao将UserDao实现的对象赋给userDao,这种用set函数设值的方式有叫做type3,用构造器设值叫做type2,用接口设值成为type1.
那么怎么才能在运行时期把userDao设置上去呢,答案是通过反射机制,在运行时,通过反射反射出UserDao的实现类的对象,并通过反射得到UserServiceImpl的setUserDao方法,将刚才反射得到的UserDao实现类的对象传给setUserDao方法,就完成了设值工作。这些设值的工作是在加载spring文件构造Bean工厂的时候就完成的.所以启动完毕,每个对象中的需要注射的属性是有值的.就是这样的达到容器管理Bean的效果.