springioc(控制反转)及di(依赖注入)

hfx123      2022-04-12     669

关键词:

什么是ioc(控制反转)

   IOC是一种设计思想,用来降低代码与程序之间的耦合程度,把两个直接相关的事物把直接相关的部分交给第三方作为中转从而降低

了耦合性,方便后期维护。控制反转也称依赖注入,因为IoC确实不够开门见山,因此业界曾进行了广泛的讨论,最终软件界的泰斗级人物

Martin Fowler提出了DI(依赖注入:Dependency Injection)的概念用以代替IoC,即让调用类对某一接口实现类的依赖关系由第三方(容

器或协作类)注入,以移除调用类对某一接口实现类的依赖。“依赖注入”这个名词显然比“控制反转”直接明了、易于理解。 

依赖注入

 即由容器(如spring)负责把组件所“依赖”的具体对象“注入”(赋值)给组件,从而避免组件之间以硬编码的方式耦合在一起

public static void main(String[] args) {
        //找到配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //读取内容
        Greeting greeting1 = (Greeting)context.getBean("greeting1");
        greeting1.sayGreeting();
        Greeting greeting2 = (Greeting)context.getBean("greeting2");
        greeting2.sayGreeting();
        
    }

配置文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd ">
    <!-- id为实例后对象名 class为对象的类型 -->
    <bean id="greeting1" class="cn.pojo.Greeting">
        <!--name为对象中的属性名称 value为赋值的内容  如果属性为类类型则,使用ref属性引用id -->
        <property name="words">
            <value>三天不打鬼子,手都不自在</value>
        </property>
        <property name="person">
            <value>小兵张嘎</value>
        </property>
    </bean>
        <bean id="greeting2" class="cn.pojo.Greeting">
        <property name="words">
            <value>世界上有十种人,认识二进制和不认识二进制的</value>
        </property>
        <property name="person">
            <value>Rod</value>
        </property>
    </bean>
</beans>

可以看到整个实例化过程及赋值,类和对象都没有的直接关联。很大程度上提高了代码的可维护性。想一想如果我们要对属性的初始值进行改动,它给我们带来了什么好处

按照之前的写法直接写死到类中,要改的时候需要直接去类中改,但这样程序又需要重新编译一次虽然平时可能感受不到,但写项目的时候这个问题就会显而易见,而配置

文件就不存在这个问题。

结果如下

技术分享图片

接触IOC这篇博客写的着实不咋地,虽然自己心中模模糊糊有这个概念但是要描述出来确实不容易,大家可以参考下面两篇大佬写的博客。

http://stamen.iteye.com/blog/1489223/

http://jinnianshilongnian.iteye.com/blog/1413846

 

springioc(di)

 软件152刘昊翰一、IOC(DI) 概念IOC(InversionofControl,控制倒转)Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 DI—DependencyInjection,即“依赖注入”:组件之间依赖关系由容器在... 查看详情

springioc(di)和aop

IOC(InversionofControl,控制倒转)Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。DI—DependencyInjection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某... 查看详情

依赖注入(di)和控制反转(ioc)

...上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对SpringIoc的理解。一、分享Iteye的开涛对Ioc的精彩讲解  首先要分享的是Iteye的开涛这位技术牛人对Spring框架的I 查看详情

springioc和di

 (1)什么是IOC(InversionOfControl控制反转)?对象之间的依赖关系应该由容器来建立。 (2)什么是DI(DependencyInjection依赖注入)?容器可以通过调用set方法或者构造器来建立对象之间的依赖关系。 注:IOC是目标,DI是手段。 (3)... 查看详情

springioc(di)实验

软件151 张鑫栋一、IOC的意思是控件反转也就是由容器控制程序之间的关系,把控件权交给了外部容器,之前的写法,由程序代码直接操控,而现在控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。DI(Dependency... 查看详情

springioc(di)

1什么是IOCIOC—InversionofControl,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。2IOC和DIDI—DependencyInjection,即&ld... 查看详情

轻松了解spring中的控制反转和依赖注入

...篇文章《轻松了解Spring中的控制反转和依赖注入》讲解了SpringIOC和DI的基本概念,这篇文章我们模拟一下SpringIOC的工作机制,使我们更加深刻的理解其中的工作。  类之间的结构图如下       以下是代码     B... 查看详情

springioc依赖注入依赖反转

Ioc容器主要实现的是控制反转,控制反转的实现手段是依赖注入,即原来具有依赖关系的类原先是由程序员自己new实例进行管理,现在是由spring容器来管理,当一个类需要另外一个类时,spring容器通过依赖注入的方式来实现。那... 查看详情

控制反转(ioc)和依赖注入(di)的区别

IOC inversionofcontrol 控制反转DI DependencyInjection 依赖注入要理解这两个概念,首先要搞清楚以下几个问题: 参与者都有谁?依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么?控制反转... 查看详情

springioc容器

一、ioc容器ioc(inversionof control)即控制反转,把某一个接口选择实现类的控制权转移给Spring容器来管理。调用类对该实现类的依赖关系由ioc容器注入(DI),传统的应用程序我们都是在类内部创建依赖对象,而Spring采用依赖... 查看详情

大话di依赖注入+ioc控制反转之定义

原文:大话DI依赖注入+IOC控制反转(一)之定义转发时请注明原创作者及地址,否则追究责任。原创:alunchen 依赖注入与控制反转   依赖注入与控制反转是老生常谈的问题。一般面试也会面试到这种问题。网上很多... 查看详情

大话di依赖注入+ioc控制反转之定义

依赖注入与控制反转   依赖注入与控制反转是老生常谈的问题。一般面试也会面试到这种问题。网上很多很多这方面的资料,搜索出来一大堆。下面我们大话一下这些个定义。DI依赖注入   依赖注入既依赖... 查看详情

依赖注入和控制反转的理解,写的太好了。

...上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对SpringIoc的理解。一、分享Iteye的开涛对Ioc的精彩讲解  首先要分享的是Iteye的开涛这位技术牛人对Spring框架的I 查看详情

控制反转(ioc)和依赖注入(di)的区别

IOC  inversionofcontrol 控制反转DI  DependencyInjection 依赖注入要理解这两个概念,首先要搞清楚以下几个问题:   参与者都有谁?   依赖:谁依赖于谁?为什么需要依赖?   注入... 查看详情

springioc

一、SpringIoC的基本概念控制反转(InversionofControl,IoC)是一个比较抽象的概念,是Spring框架的核心,用来消减计算机程序的耦合问题。依赖注入(DependencyInjection,DI)是IoC的另外一种说法,只是从不同的角度,描述相同的概念。... 查看详情

ioc-反转控制/di-依赖注入

7.1IOC(inversionofcontrol)–反转控制1)之前我们在学JSP的时候,在CoreServlet中,我们创建xxxDao对象是如何创建的?IXxxDao xxxDao = new XxxDaoImpl();这种写法new了一个XxxDaoImpl类,这样使 查看详情

spring------控制反转(ioc)/依赖注入(di)

一。spring核心概念理解控制反转:控制反转即IoC(InversionofControl)。它把传统上由程序代码直接操控的对象的调用权交给容器。通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程... 查看详情

spring核心思想:ioc(控制反转)和di(依赖注入)

Spring有三大核心思想,分别是控制反转(IOC,InversionOfController),依赖注入(DI,DependencyInjection)和面向切面编程(AOP,AspectOrientedProgramming)。这里只说前两个核心思想,最后一个下次再说(手动滑稽)。控制反转(IOC,Inversio... 查看详情