• 学习Spring IOC控制反转和DI依赖注入总结


    30岁的小曹,20岁的身体,还在坚持在能力允许控制范围内22点睡觉,5点起床锻炼身体,好好学习,除了加班或者像今天这样的深夜,再一次写已经有X百万人写过的 spring Ioc 的总结博客。

    一、IOC 控制反转详解:

    1).传统非spring管理时候的对象间调用依赖:

    我们都知道,随便一本破框架的破书上都说Spring的核心之一IOC-控制反转,控制反转是管理bean的,什么是bean?一切java对象。java对象怎么来的? A a = new A(),New出来的。

    那么我们定义个 Pig 类:

    public class Pig

    {

      public String eat()

      {

        return "猪会吃!";  

      }

    }

    我们在定义一个类: Person

    public class Person

    {

      private Pig pig;

      public  void setPig(Pig pig)

      {

        this.pig pig;

      }

      public void usePig()

      {

        System.out.println("我打算去喂猪!");

        System.out.println(pig.eat());

      }

    }

    测试:

    public class BeanNSTest

    {

      public static void mian(String[] args)throws Exception {

        Pig pig  = new Pig();

        Person person = new Persion();

        person.setPig(pig);

        person.usePig();

      }

    }

    我打算去喂猪!

    猪会吃!

    //上面介绍的是java传统方式,调用者person主动去创建被依赖对象pig,然后在去调用被依赖对象pig的方法eat。比如上面 Person 主动创建对象pig,然后调动pig.eat()输出。

    2). 使用spring 后,spring管理bean是通过用XML配置文件之间管理bean的,例如上面的人和猪的依赖关系:

    bean.xml

    <bean id="person" class="com.test.Person">

      <property name="pig" ref="pig">

    </bean>

    <bean id="pig" class=“com.test.Pig”>

     //<property>中name="pig"的pig是 Person方法中setPig的方法,ref="pig"的pig是setPig的参数;

    public class BeanTest

    {

      public static void mian(String[] args)throws Exception {

        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");

        Person p = ctx.getBean("person",Person.class)

        p.usePig();

      }

    }

    //结果:

    我打算去喂猪!

    猪会吃!

    从第二种测试结果来看:使用spring框架后,调用者无需主动获取被依赖对象,只需要被动接受spring容器为调用者的成员变量赋值即可(配置文件property),由此可见,使用spring后 调用者获取被依赖对象的方式由原来的主动获取,变成了 被动接受。于是Rod Johnson【绕波特 . 真桑】将这种方式称为控制反转 IOC。

    一、DI依赖注入 超级详解:

    1). 因为spring容器 将依赖对象注入给了调用者(通过配置文件),所以调用者无需 主动获取被依赖对象,只要被动等待spring容器注入即可。所以 Martine Fowler【马蹄 . 弗劳尔】 称者叫依赖注入DI。

    所以spring IOC控制反转就是依赖注入DI,所以spring IOC控制反转就是依赖注入DI,所以spring IOC控制反转就是依赖注入DI,所以spring IOC控制反转就是依赖注入DI。重要的事情说4遍。

    当然spring发展到今天已经由原来的xml配置,改成代码里面注解方式了,更方便点。后续有空再给介绍下,希望未来有人会看到。

    30岁的小曹,20岁的身体,go ahead!

  • 相关阅读:
    强烈推荐Seam实战
    关于写给大家看的C语言书(第2版)的读后感
    在Win7系统上安装ccnet 安装笔记
    使用Itext把html转换成pdf文件
    升级项目到Vs2010,编译时出现:MSB6006: “LC.exe”已退出,解决方法
    vs2010 插件不显示的问题处理。
    几个软件研发团队管理的小问题
    关于UML风格(第2版·英汉对照)的读后感
    C#本质论(第2版)的评论
    IDA Pro代码破解揭秘这本书怎么样
  • 原文地址:https://www.cnblogs.com/belen87/p/9249105.html
Copyright © 2020-2023  润新知