首页 > 代码库 > ioc(di) 前世今生
ioc(di) 前世今生
ioc inversion of control 控制反转
学习hibernate时第一次接触到这个概念 在hibernate中常用于一对多和多对多关系映射中 inverse=true时表示自身不维护两表之间关系,而由对方维护,常用于数据库crub的优化
学习spring时再次接触这个概念 ioc前身就是工厂模式 factory
那么何为工厂模式?
老板要获取一件产品,但是自己不想亲自去做(解耦合),交给专门的工人去做,老板要做的就是直接获取成品,从哪获取,从工厂获取 Factory.getxxx()
工厂会提供一个接口,
工人们按照接口标准,制造产品(继承接口方法,实例化对象) 返回给工厂定义的静态方法 这个工作在BeanFactory有spring工厂自动完成
dao.getUserDao()
public static UserDao getUserDao() { /** * 给出一个配置文件,文件中给出UserDao接口的实现类名称! * 我们这个方法,获取实现类的类名,通过反射完成创建对象! */ /* * 得到dao实现类的名称 */ String daoClassName = props.getProperty("cn.itcast.usermng.dao.UserDao"); /* * 通过反射来创建实现类的对象 */ try { Class clazz = Class.forName(daoClassName); return (UserDao)clazz.newInstance(); } catch(Exception e) { throw new RuntimeException(e); } }
IOC 控制反转 在这里也叫依赖注入DI
老板不在从工厂中获取需要的产品,而是放一个篮子()定义一个接口) 放在家门口,工厂(容器Container getUserDao)生产好了的商品自动装配到接口
从Dao dao=factory.getUserDao()---->Dao dao=null;dao接口由容器自动装配
单例 singleton 容器创建时初始化bean 且只创建一个
原型 prototype 容器初始化时不创建bean对象实例化时创建 可创建多个
ioc(di) 前世今生
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。