Spring的 ioc 和 di的简介

2021-03-11 00:45

阅读:314

标签:dep   比较   实例   setter   描述   实现   code   ati   bean   

1,反转控制IOC (Inversion Of Control)的缩写,即创建对象的反转控制。:把对象的创建权限交给Spring容器,让spring帮我们实例化对象,我们只是从spring容器中取得实例

  反转控制IOC (Inversion Of Control)的缩写,即创建对象的反转控制。:

  把对象的创建权限交给Spring容器,让spring帮我们实例化对象,我们只是从spring容器中取得实例

 

  例:

    以前我们要自己new对象,现在spring帮我们new对象,以后我们需要对象,就找spring要

    以前:做鞋子–手工作坊 (自己new对象)

    1、效率低

    2 、每个细节都要关注

    3、成本高----人力 ,时间

 

    现代:工厂 (spring bean工厂—new对象)

    1、效率高

    2、不需要关注每个细节,机器

    3、成本低

 

2、依赖注入DI(Dependency Injection )的缩写:依赖了spring容器注入的那个对象(在spring配置文件中,将其中一个bean依赖注入到另一个bean中)。

  1,首先,DI的方式一般有三种:

    1,构造器依赖注入:

      构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。【在构造方法的入参中设置需要注入的对象】

    2,构造器的注入:

      使用方式: 在构造方法中声明需要注入的对象,构造方法的参数列表就是需要注入的对象列表。

      优点: 对象在构造完成即进入就绪状态。

      缺点: 当依赖对象比较多时,构造方法的参数列表会比较长,不好维护。

    例子:

        1)根据参数名进行注入


技术图片  

        2)根据参数下标进行注入

技术图片

 

   2,Setter方法注入:

    Setter方法注入是容器通过调用无参构造器或无参static工厂方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

    使用方式: 在类中增加需要被注入对象的getter/setter方法。

    优点: 使用起来更宽松,需要什么对象就调用其对应的setter方法。

    缺点: 构造完成后不能立即使用,需要先调用依赖对象的setter方法进行依赖注入。

    

    例子:

          1)当参数为普通类型时直接可以引用:

技术图片       

          2)当参数为引用类型时:

技术图片

          3)当参数为数组时:

技术图片

          4)当参数为集合时:

技术图片

          5)当参数为map时:

技术图片

3,接口注入:

需要实现某一个用于注入对象的接口,该接口定义有注入对象的方法,方法参数就是需要被注入的对象。

 

PS:接口注入的方式比较繁琐且侵入性强【需要实现一些不必要的接口】,用得很少,了解就好。

Spring的 ioc 和 di的简介

标签:dep   比较   实例   setter   描述   实现   code   ati   bean   

原文地址:https://www.cnblogs.com/qxhIndex/p/14136760.html


评论


亲,登录后才可以留言!