zoukankan      html  css  js  c++  java
  • IOC

    IOC和DI概念

    • 程序中存在两种角色:调用者、被调用者,调用者和被调用者之间存在依赖关系,Java传统的编码方式是调用者创建被调用者对象,并维护依赖关系,它是紧耦合的。spring通过引入spring容器(第三方角色),创建对象并维护对象之间的依赖关系,它是松耦合的。
    1. spring通过工厂模式来创建对象
    2. spring是通过代理模式和注入的方式来维护对象之间的依赖关系的
    3. IOC和DI:IOC即控制反转,个人理解为是从调用者、被调用者模型到调用者、spring容器(管理者)、被调用者模型之间角色职责的反转;DI即依赖注入,个人理解为spring是通过依赖注入的方式来维护调用者和被调用者之间的关系的
    • 好处:
    1. spring容器帮我们创建管理无状态对象(核心的业务逻辑对象),即Controller、Service、Dao(依赖数据库链接,后续说明ThreadLocal)和一些全局配置(建议声明final)等,像容器对象和POJO这种对象本身存在的意义是存储数据,主要使用场景应当是临时对象,方法栈中(线程私有),所以大部分是临时存在的,需要我们自己创建并维护。全局的共享变量,需要根据具体情况自己处理线程安全(如果存在多线程写的情况,可以根据情况采用java提供的线程安全的容器对象)。
    2. 它是松耦合的,使代码的扩展性更强,这种扩展性怎么体现呢,比如,A依赖B,使用spring容器,A has a B,可以将B声明成接口,当由于业务变更需要引入新的B实现时,这时,我们不需要去修改原有代码,只需定义新的实现,同时,注入即可。这种满足java开放闭合的原则。
    3. spring容器的这种bean的创建和管理机制(工厂和动态代理)可以帮助快速集成第三方框架,通过代理将第三方的框架的核心类的实例纳入spring的管理。
  • 相关阅读:
    写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)
    工作1个月+1个星期
    矫正骨盆前倾!平坦小腹!解决腰痛!
    《非暴力沟通》
    了不起的盖茨比
    X战警系列
    Docker常用命令大全
    学习笔记12
    电子公文传输系统1个人贡献
    实验四 Web服务器2
  • 原文地址:https://www.cnblogs.com/warking/p/6734473.html
Copyright © 2011-2022 走看看