zoukankan      html  css  js  c++  java
  • Spring框架底层IOC实现

    Spring框架底层IOC实现

    xml配置+反射+工厂解耦

    配置文件

    <bean id="userDao" class="**.UserDaoImpl">

    工厂类

    class BeanFactory {
        public static UserDao getUserDao(String id) {
            // String className = 解析配置文件xml 拿到id对应的class
            // 反射
            class clazz = class.forName(className);
            return clazz.newInstance();
        }
    }

    分析:

    • 通过xml解析获取对象中属性的值
    • 通过反射得到字节码文件
    • 通过字节码文件创建对象

    IOC的理解

    IOC(Inversion of Control)控制反转,是一种设计思想,明确谁控制谁控制了什么,为何是反转,哪方面反转了?

    • 谁控制谁:传统的javase程序中,直接在对象内部通过new来创建对象,是由程序主动创建对象,而IOC由IOC容器来创建对象,所以是IOC容器控制了对象
    • 控制了什么:控制了外部资源获取(对象,文件等)
    • 为何是反转:传统程序是由我们自己在对象中主动控制去直接获取依赖对象,即正转;反转则是由容器帮忙创建及注入依赖对象;对象只是被动的接收依赖对象
    • 哪方面反转:依赖对象的获取被反转

    DI(Dependency Injection)依赖注入,容器动态的将某个依赖关系注入到组件之中,明确谁依赖谁,为什么需要依赖,谁注入谁,注入了什么

    • 谁控制谁:应用程序依赖于IOC容器
    • 为什么需要依赖:应用程序需要IOC容器来提供对象需要的外部资源
    • 谁注入谁:IOC容器注入应用程序的某个对象
    • 注入了什么:注入某个对象需要的外部资源
  • 相关阅读:
    jquery 查找 新建元素
    sphinx中,直接取主键ID
    把一个文件夹下的多个csv文件合并到一个excel的多个sheet
    学习XOR
    数据结构C++,线性表的实现(数组方式)
    确定主机字节序
    TCP打开文件传输(客户端code)
    使用两个管道的客户服务器模型
    数据结构C++,栈的实现
    TCP打开文件传输(服务器端并发code)
  • 原文地址:https://www.cnblogs.com/python-road/p/14261992.html
Copyright © 2011-2022 走看看