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

时间: 2024-11-13 10:16:53

Spring(三):IOC和DI的相关文章

深入解析spring的IOC和DI

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在此之前先说一下没有</span><span style="font-family: 'Times New Roman'; background-color: rgb(255, 255, 255);">spring</span>&l

对Spring中IOC和DI的理解

前几篇讲了Spring中IOC和DI的用法,本篇应该放到三篇之前,但一直没有想到好的讲解方式,后参考https://blog.csdn.net/luoyepiaoxue2014/article/details/72426666博客,对其中涉及到的进行了简单的总结. 在学习Spring的过程中,总会涉及到两个概念---IOC和DI,即控制反转和依赖注入,而对这两个概念的理解也总是含糊不清的,下面就对自己的理解进行总结. 首先是IOC,即控制反转,需要理解的是:怎么控制?谁控制了什么?怎么反转?既然

Spring的Ioc与DI

一.前言 Spring框架的核心基于控制反转的原理. IoC是一种将组件依赖关系的创建和管理外部化的技术. 考虑一个示例,其中Foo类依赖于Bar类的实例来执行某种处理. 传统上,Foo使用new运算符创建Bar的实例,或者从某种工厂类中获取一个实例. 使用IoC方法,运行时某些外部进程会将Bar的实例(或子类)提供给Foo. 这种行为,即在运行时注入依赖项,导致IoC被Martin Fowler重命名为更具描述性的依赖项注入(DI).依赖注入是IoC的一种特殊形式,尽管您经常会发现这两个术语可

spring的ioc,di,mvc 的简单逻辑(根据网课和百度)

为了提升自己的技术所以没事自己通过百度和找资料来学习了一下spring的思想所以就记录一下 这个是比较简单的一种,有点乱.我按照自己的理解写的有注释,但是不知道是不是都是正确,如果有错误希望批评指正谢谢. 总结: 1:首先要了解spring的整体: 主要作用就是ioc di mvc 和 aop ,所以要从这几个方面去入手. 想要指导思想就要从头开始,所以就总结了一下整个流程,如下: 一:首先要配置spring 1:配置web.xml中的DispatcherServlet 2:设定 init-pa

Spring 之 IOC ,DI 理论

本文是依照极客学院java<Spring之IOC>章节学习的心得.随笔记录 浅谈IOC:(Inversion of Control, 控制反转) Spring 核心容器,贯穿始终.所谓IOC,对Spring框架来说,就是由Spring来负责控制对象的生命周期和对象间的关系: 1. 传统开发模式:对象之间互相依赖 2. IOC开发模式:IOC容器安排对象之间的依赖(中间加入一个管理控制中介) IOC理论的背景: 图一为传统设计对象相互引用的模式,所有的对象同过相互之间的合作实现系统的逻辑,相互耦

Spring中IOC与DI的的区别

依赖注入的前提: 有IOC的环境,也就是将必须对象的创建权交给了Spring. DI 介绍 Dependency Injection 依赖注入.需要有IOC 的环境,Spring 创建这个类的过程中,Spring 将类的依赖的属性设置进去. IOC与DI的的区别: IOC:  控制反转,将类的对象的创建交给Spring类管理创建. DI:    依赖注入,将类里面的属性在创建类的过程中给属性赋值. DI和IOC的关系: DI不能单独存在,DI需要在IOC的基础上来完成. 这样做得好处:做到了单一

JavaWeb_(Spring框架)Spring中IoC与DI概念入门

Spring是于2003 年兴起的一个轻量级的Java 开源框架,它由Rod Johnson创建.传统J2EE应用的开发效率低,Spring作为开源的中间件,提供J2EE应用的各层的解决方案,Spring贯穿了表现层.业务层及持久层,而不是仅仅专注于某一层的方案.可以说Spring是企业应用开发的“一站式(full-stack)”选择.然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合. 简单来说,Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. Spri

Spring初探(IOC,AOP,DI)

Spring的引出: 问题1:依赖配置信息... class UserDaoImpl implements UserDao { //数据库连接信息,需要一些配置,但是又不能写在这个类中(硬编码,改的时候麻烦) private String jdbcUrl = "..."; private String driverClass; private String username; private String password; // ... } 把这些配置信息放在外部的一个配置文件中:

Spring框架IOC,DI概念理解

1.什么是框架? 框架是一种重复使用的解决方案,针对某个软件开发的问题提出的. Spring框架,它是一个大型的包含很多重复使用的某个领域的解决方案. Spring的理念:不要重复发明轮子. 2.Spring的理解? 首先,Spring是一个容器.它是装对象的.主要就是通过搜索class的路径.找出bean对象,实际就是根据反射来获取这个bean对象的: Class<?> classit=Class.forName("com.jinglin.model.Person");

对Spring的IoC和DI最生动的解释

首先想说说IoC(Inversion of Control,控制倒转).这是spring的核心,贯穿始终.所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系.这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好.qq号.电话号.ip号.iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节.传统的程序开发也是如此,在