• Spring 基础概念——DI、IOC(一)


    一、IOC 控制反转

    package com.qunar.studyspring.bean;
    
    import com.qunar.studyspring.dao.PersonDao;
    import com.qunar.studyspring.object.Person;
    
    /**
     * 这是一个没有控制反转的例子
     * @author liqiu
     *
     */
    public class PersonServiceBean {
        private PersonDao personDao = new PersonDao();
    
        public void save(Person person) {
            personDao.save(person);
        }
    }

    在解释什么是控制反转之前,先介绍没有出现这个技术之前的例子。如上面所示,PersonDao是直接引用的,也就是说我要在哪里使用PersonDao,就要在哪里初始化它,像是废话是吧,没关系,再看下面的控制反转的例子:

    package com.qunar.studyspring.bean;
    
    import com.qunar.studyspring.dao.PersonDao;
    import com.qunar.studyspring.object.Person;
    
    /**
     * 这是一个没有控制反转的例子
     * @author liqiu
     *
     */
    public class PersonServiceBean {
        private PersonDao personDao;
    
        //咱们在构造方法内(也可以采用set方法),将对象注入到应用里面,也就是应用里面的personDao是由外部容器负责创建的
        public PersonServiceBean(PersonDao personDao){
            this.personDao = personDao;
        }
        
        public void save(Person person) {
            personDao.save(person);
        }
    }

    区别就是在PersonServiceBean中,什么时候创建personDao,自己不知道,有外面调用它的程序控制。也就是说所谓控制反转就是把依赖对象交给外部容易负责创建。

    二、DI 依赖注入

    所谓依赖注入就是:在运行期间,由外部容器动态将依赖对象注入到组件中。

    那么依赖注入和控制反转有啥区别哪?引用网络上面的一段话:“依赖注入和控制反转是对同一件事情的不同描述,只是它们描述的角度不同。依赖注入是从应用程序的角度在描述,即:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,既:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。”

    三、使用Spring的好处:

    1、解耦:Control、Service和Dao相互不在直接声明使用

    2、事物管理服务、JMS服务、持久化等等

    3、支持单例模式

    4、支持AOP技术,面向切面开发

    5、有很多的辅助类:JdbcTemplate、HibernateTemplate

    6、支持主流框架的集成:Hibernate、Struts等

    四、轻量级框架和重量级框架的区别

    主要区别是:启用服务的多少。

    Spring是否是重量级框架?如果仅仅使用Spring的默认服务,那么就是轻量级框架,如果其他的服务都打开使用的话就是重量级框架。

  • 相关阅读:
    React初步学习-利用React构建个人博客
    React入门介绍(2)- React Component-React组件
    React入门介绍(1)-ReactDOM.render()等基础
    (3)Gojs model简介
    javascript脚本的延时加载
    javascript中的this作用域详解
    mongodb命令
    vim
    关于格式转换
    公告栏添加时钟
  • 原文地址:https://www.cnblogs.com/liqiu/p/3916328.html
Copyright © 2020-2023  润新知