• Spring(三):IOC和DI


    一、概述

    • IOC(Inversion of Controller):控制反转

      • “控制”指的是在我们的应用程序中创建对象的控制权

      • “反转”指的是原先在我们应用程序中创建对象都是我们手动去new一个对象,而现在我们将这个创建对象的权利交给spring容器。

    • DI(Dependency Injection):依赖注入

      • “依赖”指的是在我们应用程序的开发过程中,Person类中的age属性和name属性

      • “注入”指的是在创建Person类的过程中,Spring容器根据配置帮助我们将Person类中的age和name属性自动赋值

    • IOC和DI的区别和联系

      • IOC强调的是控制权力的转变,是一种编程思想

      • DI强调的是过程,spring帮我们管理对象的过程中,会帮我们把对象所依赖的属性什么的自动注入到对象中

      • 可以简单的说DI是基于IOC思想的实现

    二、举个例子

    • 目前有一个“人”类,里面有age和name属性

    • package com.zhurouwangzi.entity;
      ​
      public class Person {
          //构造函数
          public Person(){
              System.out.println("Person被初始化了...");
          }
      ​
          public void sayHello(){
              System.out.println("Hello....."+"年龄:"+age+"    名字:"+name );
          }
      ​
          private int age;
          private String name;
      ​
          public int getAge() {
              return age;
          }
      ​
          public void setAge(int age) {
              this.age = age;
          }
      ​
          public String getName() {
              return name;
          }
      ​
          public void setName(String name) {
              this.name = name;
          }
      }
    • 这个时候我们想要使用Person对象,需要手动new一个Person对象,然后才能够使用

      • @Test
        public void test1(){
            Person p = new Person();
            p.setAge(18);
            p.setName("小明");
            p.sayHello();
        }
    • 使用Spring容器

      • 在applicationContext.xml文件中配置一个bean

      • <bean id="person" class="com.zhurouwangzi.entity.Person">
                <property name="age" value="18"></property>
                <property name="name" value="小明"></property>
        </bean>
      • @Test
        public void test2(){
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
            Person p = (Person)applicationContext.getBean("person");
            p.sayHello();
        }
    • 由上边的代码我们可以看出,不使用Spring,我们需要手动new一个Person对象,然后调用对象的set方法才能给对象的属性赋值;而使用Spring,在applicationContext.xml文件中配置好person这个bean对象,spring就会根据配置文件去帮我们创建和管理对象,还会帮我们把属性赋值;

    转载请注明出处:https://www.cnblogs.com/Infancy/p/12587787.html

  • 相关阅读:
    Python:Fatal error in launcher: Unable to create process using 问题排查
    接口测试及接口Jmeter工具介绍
    bug的分类和等级
    如何编写测试用例
    网络流入门--最大流算法Dicnic 算法
    Codevs 1004 四子连棋
    洛谷 P1072 Hankson 的趣味题
    Codevs 搜索刷题 集合篇
    洛谷 P1195 口袋的天空
    洛谷 P1362 兔子数
  • 原文地址:https://www.cnblogs.com/Infancy/p/12587787.html
Copyright © 2020-2023  润新知