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对象实例化时创建 可创建多个

  • 相关阅读:
    jsp 特殊标签
    poj 1753 Flip Game 高斯消元 异或方程组 求最值
    zoj 3155 Street Lamp 高斯消元 异或方程组 求方案数
    poj1222 EXTENDED LIGHTS OUT 高斯消元解异或方程组 模板
    zoj 3930 Dice Notation 模拟
    zoj 3157 Weapon 线段树求逆序对数
    hdu 1242 Rescue BFS+优先队列
    hdu 3466 Proud Merchants 贪心+01背包
    zoj 3689 Digging 贪心+01背包
    hdu 2602 Bone Collector 01背包模板
  • 原文地址:https://www.cnblogs.com/lt123/p/7341902.html
Copyright © 2011-2022 走看看