一、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的默认服务,那么就是轻量级框架,如果其他的服务都打开使用的话就是重量级框架。

Spring 基础概念——DI、IOC(一)相关推荐

  1. Spring基础概念

    Spring基础概念 1.什么是Spring? Spring是一个开源的用来简化开发的应用程序框架. 1.1简化开发 Spring对一些常用的API做了封装,简化了程序代码(例如使用Spring JD ...

  2. Spring基本概念:IoC,DI,Wiring

    文章目录 一.IoC(控制反转) 二.DI(依赖注入) 三.Bean configuration(配置) 1. XML Schema-based configuration:基于XML模式的配置 2. ...

  3. java类加载器正确的是_Java面试题:面向对象,类加载器,JDBC, Spring 基础概念

    1. 为什么说Java是一门平台无关语言? 平台无关实际的含义是"一次编写到处运行".Java 能够做到是因为它的字节码(byte code)可以运行在任何操作系统上,与底层系统无 ...

  4. 学习Spring Boot前需要了解的Spring基础知识

    Spring 核心概念 DI: dependency injection AOP: aspect oriented programming container: 负责对象的生命周期,从new到fina ...

  5. Spring IOC基础概念总结:何为控制?何为反转?控制了什么?反转了哪里?

    IOC(Inversion of Control 控制反转),是Spring框架核心,是一种重要的设计思想.它实现了将设计好的对象交由IOC容器管理,而不再是传统意义上的在对象内部直接控制. 控制 在 ...

  6. Spring框架基础概念(面试概念解答)

    Spring框架概述 什么是Spring? 三层体系架构 Spring框架的优点 Spring的体系结构 Core Container(核心容器) Data Access/Integration(数据 ...

  7. java-12:spring MVC - 控制反转IOC,依赖注入DI

    学习spring框架之前,先理解几个概念: 1.第一部分:依赖倒置原则 2.第二部分:控制反转,控制反转容器(实例) 3.第三部分:控制反转,控制反转容器(全面理解,面试题) 综合性理解:控制反转(I ...

  8. Spring基础:快速入门spring(1):基础概念

    作为流行了10年以上的老将,spring依然精神矍铄,影响不减.本文将对spring很基础的概念进行介绍以及为学习spring最核心和基础的知识作环境搭建的准备. Spring官网 http://do ...

  9. Spring核心思想,IoC与DI详解(如果还不明白,放弃java吧)

    1.IoC是什么?IoC(Inversion of Control)控制反转,IoC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式.2.IoC解决了什么问题?在IoC出现以前,组件之 ...

最新文章

  1. MapReduce过程详细分析
  2. 修改大表字段属性报主键冲突
  3. 2021.NET大会日程首发!行程亮点全曝光!
  4. 课堂作业(求几个数的最大值)
  5. 微信支付之获取code
  6. JavaWeb 过滤敏感词汇
  7. 2021年中青杯 B题 港珠澳车辆通行(详细解题思路)
  8. 深度学习与围棋:为围棋数据设计神经网络
  9. 给电脑装一个双系统Linux,安装Linux让你的电脑变成双系统的七个理由
  10. dell屏幕亮度调节不了_戴尔笔记本无法调节亮度怎么办?如何找回调节亮度?
  11. License information could not be obtained from Elasticsearch due to Error: Request Timeout after 300
  12. 飞速低代码 | 低代码,数字化建设的 “ 最后一公里
  13. 好家伙!上天入地混血儿料箱机器人
  14. Java实现-交错正负数
  15. 公司合伙人股权的进入和退出机制
  16. 《Nginx实战教程》专栏介绍
  17. 判断字符串是否相等StringUtils.equals和String.equals
  18. java pinyin4j_java实现中文汉字转拼音 Pinyin4j的基本用法
  19. EXCEL插件-爬虫[1]-地址文字转换成地理坐标
  20. 老百姓的福利,医保中心的动力 ——华为助力浙江省级医保数据中心网络升级...

热门文章

  1. 爆牙齿的Web标准面试考题II(iPhone SMS/iChat UI的Web标准实现)
  2. CStringArray 字符串数组的使用 以及调试时怎么Dump出其中的内容
  3. 杭电1596find the safest road
  4. jdbc至sql server的两种常见方法
  5. Google面试题——蓄水问题
  6. 如何将一棵树转换成二叉树
  7. 计算机辅助初中数学教学,计算机辅助数学教学的优势
  8. JAVA 常用开发快捷键大全
  9. 随想录(嵌入式工程师的出路)
  10. 随想录(多学一点汇编语言)