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

  • 相关阅读:
    python requests用法总结
    Linux统计某文件夹下文件的个数
    PM2使用及介绍
    如何区分USB 2.0 和USB 3.0插口
    npm突然找不到npm-cli.js的解决方法
    mRemoteNG
    js中几种实用的跨域方法原理详解
    Tornado异步阻塞解决方案
    [阅读笔记]EfficientDet
    iOS 保存视频AVAssetWriter
  • 原文地址:https://www.cnblogs.com/lt123/p/7341902.html
Copyright © 2020-2023  润新知