美文网首页
Spring IoC 概述

Spring IoC 概述

作者: ryancao_b9b9 | 来源:发表于2018-04-29 23:57 被阅读0次

    1、概述(Inversion of control, 控制反转)

    1.1 思想

        IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。

                  a、把程序对象设置到IoC/DI容器的配置中,作为Bean来统一管理

        b、由IoC/DI容器来管理Bean的创建、实例化

        c、把程序之间的依赖关系去掉,由IoC/DI容器来把Bean之间的关系注入到需要这些关系的对象里面

        用一句话概述IoC:“不要来找我,我会去找你”。

    1.2 IoC与DI(Dependency Injection,依赖注入)关系

        DI即组件之间的依赖关系由容器在运行期决定,由容器动态的将某种依赖关系注入到组件之中。依赖注入机制只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不用关心具体的资源来自何处、由谁实现。

        控制反转(IoC):从 IoC容器的角度来说

     依赖注入(DI): 从应用程序的角度来说

    1.3 Ioc(DI)与应用关系

        谁依赖于谁:应用程序依赖于IoC/DI容器

        为什么需要依赖:因为反转后,应用程序所依赖都资源都在IoC/DI容器中

        谁注入谁:IoC/DI容器注入应用程序

        注入了什么:注入了应用程序需要的外部资源,比如:依赖关系

    1.4 演进过程

        a:Java基础阶段

        b:Factory阶段

        c:Factory+XML+反射 阶段

        d:IoC/DI阶段

    1.5 IoC个人理解

        a、应用程序不主动创建对象,但是要描述创建它们的方法

     b、应用程序不直接进行服务的装配,但是要描述哪一个组件需要哪一项服务,由容器负责将这些装配在一起


    2、举例说明



    3、类型

    3.1 设值注入(Spring支持)

        Setter注入

    例:ref代表spring会按照course为模板去new一个course并赋值到course中

    <bean id="course" class="com.niit.DI.Course"></bean>

    <bean id="student" class="com.niit.DI.Student">

        <property name="course" ref="course" ></property>

    <bean>

    3.2 构造方法注入(Spring支持)

        构造函数注入

    例:构造函数方式注入的时候必须配置构造函数的参数

    course" class="com.niit.DI.Course">

    <bean id="course" class="com.niit.DI.Course"></bean>

    <bean  id="teacher" class="com.niit.DI2.Teacher">

    <constructor-arg name="course" ref="course"></constructor-arg>

    </bean>

    备注: 自动注入(Spring支持)

      例:byName 从配置文件中查找跟被注入属性名称相同的bean, byType 按照被注入属性的类型从配置文件中查找跟被注入属性相同的类型(返回多个会异常

        <bean id="course" class="com.niit.DI.Course"></bean>

         <bean id="person" class="com.niit.DI3.Person" autowire="byName"></bean>

    3.3 接口注入(Spring不支持、EJB支持)


    相关文章

      网友评论

          本文标题:Spring IoC 概述

          本文链接:https://www.haomeiwen.com/subject/xkpnlftx.html