zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    c语言之排序
    c语言中的break 和 continue语句
    c语言之循环
    c语言之选择
    使用函数封装代码
    C语言的运算符
    判断两个对象是否相等:hashcode
    更新线上的资源存在删除和添加的情况-要避免空窗期的实现方法
    变量只能设置一次方法
    JAVA-获取系统信息:内存和系统、PID、内核
  • 原文地址:https://www.cnblogs.com/Infancy/p/12587787.html
Copyright © 2011-2022 走看看