码迷,mamicode.com
首页 > 编程语言 > 详细

Spring(三):IOC和DI

时间:2020-03-28 16:30:52      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:focus   out   and   span   小明   ret   path   void   pen   

一、概述

  • 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就会根据配置文件去帮我们创建和管理对象,还会帮我们把属性赋值;

Spring(三):IOC和DI

标签:focus   out   and   span   小明   ret   path   void   pen   

原文地址:https://www.cnblogs.com/Infancy/p/12587787.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!