zoukankan      html  css  js  c++  java
  • 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对象实例化时创建 可创建多个

  • 相关阅读:
    git
    java网络
    配置本地git服务器(gitblit win7)
    atom 插件安装【转载】
    javaIo
    如何在eclipse中设置断点并调试程序
    如何将工程推到github上
    git操作记录
    编码
    node升级7.0以上版本使用gulp时报错
  • 原文地址:https://www.cnblogs.com/lt123/p/7341902.html
Copyright © 2011-2022 走看看