基本概念

  1. IOC是什么?
        IOC(Inversion of Control)控制反转,IOC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式。
  2. IOC解决了什么问题?
        在IOC出现以前,组件之间的协调关系是由程序内部代码来控制的,或者说,以前我们使用New关键字来实现两组间之间的依赖关系的。
        这种方式就造成了组件之间的互相 耦合。IOC(控制反转)就是来解决这个问题的,它将实现组件间的关系从程序内部提到外部容器来管理。
        也就是说,由容器在运行期将组件间的某种依赖关系动态的注入组件中。
  3. IOC的实现方式
        1. 依赖查找(Dependency Lookup):容器中的受控对象通过容器的API来查找自己所依赖的资源和协作对象。这种方式虽然降低了对象间的依赖,但是同时也使用到了容器的API,造成了我们无法在容器外使用和测试对象。
        依赖查找是一种更加传统的IOC实现方式。
        2. 依赖注入(Dependency Injection):这就是DI,字面上理解,依赖注入就是将服务注入到使用它的地方。对象只提供普通的方法让容器去决定依赖关系,
  4. IOC与DI的区别
        对于IOC来说,DI更像是一个用来控制容器的工具,之所以依赖,是根据容器里各个组件之间的关系来决定。
  5. Spring中的IOC和DI
        IOC是Spring的核心,贯穿始终。对于Spring框架来说,就是由Spring来负责控制对象的生命周期对象间的关系
        Spring中DI有两种实现方式---Setter方式(传值方式)和构造器方式(引用方式)。

IOC

    假设一种情况,我们要做一个图书馆里系统,我们要定义一个书的Bean类,里面有书的id书名作者出版社....等等属性,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。
    而spring中是如何实现的呢?相当于一个图书管理员,它负责管理很多很多书籍的信息,你只需要提供你想要借哪本书、或者说哪种类型的书,那么它就会提供给你,如果不是我们想要的书,我们就抛出异常反馈给它。整个过程不再是我们自己控制的了,我们想要什么书,不用我们去找,也不用我们去造。所有的类都在spring这个容器内登记,我们只需要请求。所有类让spring创建、销毁,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转
    所以由上面看,spring的解决方案就是面向接口的编程,对对象的控制直接调用接口就可以实现了。(前提是配置好了。

Spring核心思想——IOC和DI的更多相关文章

  1. Spring核心思想Ioc和Aop (面试)

    Spring核心思想Ioc和Aop (面试) 注意: Ioc和Aop并不是Spring提出的,在Spring之前就已经存在,Spring只是在技术层面给这两个思想做了非常好的实现. 1 Ioc 1.1 ...

  2. 用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

    用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心.依赖注入(DI)是 ...

  3. Spring 简单使用IoC与DI——XML配置

    目录 Spring简介 导入jar包 Spring配置文件 Spring的IoC IoC简介 快速使用IoC Spring创建对象的三种方式 使用构造方法 使用实例工厂 使用静态静态工厂 Spring ...

  4. Spring核心思想:“控制反转”,也叫“依赖注入” 的理解

    @Service对应的是业务层Bean,例如: @Service("userService") public class UserServiceImpl implements Us ...

  5. spring核心思想:IOC(控制反转)和DI(依赖注入)

    Spring有三大核心思想,分别是控制反转(IOC,Inversion Of Controller),依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect O ...

  6. Spring核心思想:IOC(控制反转)、DI(依赖注入)和AOP(面向切面编程)

    Spring有三大核心思想,分别是控制反转(IOC,Inversion Of Controller),依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect O ...

  7. 3. Spring 核心之 IOC(控制反转) & DI(依赖注入)

    注:此文摘自 http://blog.csdn.net/it_man/article/details/4402245 IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述 ...

  8. Spring 框架基础(03):核心思想 IOC 说明,案例演示

    本文源码:GitHub·点这里 || GitEE·点这里 一.IOC控制反转 1.IOC容器思想 Java系统中对象耦合关系十分复杂,系统的各模块之间依赖,微服务模块之间的相互调用请求,都是这个道理. ...

  9. Spring 之初识IOC和DI

    下载Spring jar包 Spring官网 下载地址 Sping核心jar包 IOC简介 IOC:控制反转,指以前程序自己创建对象,现在将创建对象的控制权交给了第三方(Spring)了 IoC底层实 ...

随机推荐

  1. IPMI的几个问题

    IPMI针对大量监控.控制和自动回复服务器的作业,提供了智能型的管理方式.此标准适用于不同的服务器拓朴学,以及Windows.Linux. Solaris.Mac或是混合型的操作系统.此外,由于IPM ...

  2. iscroll.js 用法介绍

    iscroll-5中文文档:http://wiki.jikexueyuan.com/project/iscroll-5/ 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码. ...

  3. SQL优化,解决系统运行效率瓶颈

    http://www.cnblogs.com/SameZhao/p/4737725.html

  4. 【c++ primer, 5e】定义类相关的非成员函数

    练习 7.6 & 7.7 #include <iostream> #include <string> using namespace std; // Sales_dat ...

  5. Qt+VS编译出错:Two or more files with the name of moc_Geometry.cpp will produce outputs to the same location

    warning MSB8027: Two or more files with the name of moc_Geometry.cpp will produce outputs to the sam ...

  6. Dijkstra+优先队列

    /* Dijkstra的算法思想: 在所有没有访问过的结点中选出dis(s,x)值最小的x 对从x出发的所有边(x,y),更新 dis(s,y)=min(dis(s,y),dis(s,x)+dis(x ...

  7. 【error】git clone: SSL certificate problem: unable to get local issuer certificate

    报错: $ git clone https://github.XXX.git Cloning into 'XXX'... fatal: unable to access 'https://github ...

  8. HDFS读写流程learning

    有许多对流程进行描述的博客,但是感觉还是应当学习一遍代码,不然总感觉怪怪的,https://blog.csdn.net/popsuper1982/article/details/51615285,首先 ...

  9. vue-cli background iamge

    vue-cli 可以将图片直接放在项目生成的 static 文件夹里,然后在components里面直接采用绝对路径去取就可以了. 在根目录里面都会有一个static目录,这个是用来存放静态文件的,把 ...

  10. Centos 查看端口占用情况

    netstat -ntlp 把相应PID kill掉即可