`
yang2617
  • 浏览: 28668 次
社区版块
存档分类
最新评论

spring IOC

    博客分类:
  • java
阅读更多
spring是一种IOC容器,所谓IOC(Inversion of Control),即控制反转.
所谓控制反转,就是由容器来控制对象之间的依赖关系以及对象的生命周期,对象的控制权由引用它的对象变成了spring容器.在传统的程序开发中,对象A要使用对象B,就必须在A中创建(new)一个B对象.在spring当中,只要以配置文件的形式声明对象以及对象之间的依赖关系.spring就会在系统运行的时候把A对象所依赖的B对象注入给A对象.这也就是所谓的依赖注入.
      <bean id="a" class="supben.A">
      	 <property name="b" ref="b" />
      </bean>
      <bean id="b" class="supben.B">
  	   <property name="a" ref="a"/>
      </bean>

上面的例子中,A类依赖于B类,B类依赖于A类.

spring的依赖注入方式主要有2种,上面例子中是基于set方法的注入,还有一种是基于构造方法的注入.
 <bean id="c" class="supben.C">
      	<constructor-arg ref="d"></constructor-arg>
  	  </bean>
  	  
  	  <bean id="d" class="supben.D">
  	  	 <constructor-arg ref="c"></constructor-arg>
  	  </bean>


下面来讨论spring是如何实现注入的,以set方法的注入为例.下面是A类和B类的代码.
public class A {
	private B b;

	public B getB() {
		return b;
	}

	public A() {
		System.out.println("class A 构造方法被执行.....");
	}

	public void setB(B b) {
		System.out.println("class A setB 方法被执行.....");
		this.b = b;
	}
}

public class B {
	private A a;

	public B() {
		System.out.println("class B 构造方法被执行.....");
	}

	public void setA(A a) {
		System.out.println("class B setA 方法被执行.....");
		this.a = a;
	}

	public A getA() {
		return a;
	}

}



tomcat启动时显示如下信息:
class A 构造方法被执行.....
class B 构造方法被执行.....
class B setA 方法被执行.....
class A setB 方法被执行.....

在创建A对象的时候,首先执行A的构造方法,然后执行A当中的setB方法.
由于setB方法依赖于B对象,所以必须先创建B对象.要创建B对象又依赖于B的构造方法.所以要先执行B的构造方法.
B的构造方法执行之后再执行B当中的setA方法,因为这个时候A对象已经存在.可以直接执行.
最后再执行A的setB方法.

由此看来,A当中引用B也是要创建,只是不需要A自己创建.而是由spring负责.表面看来只是少了几个new关键字.实际上却大大降低了代码的耦合度.使用A对象的人不需要知道B对象如何构造,何时构造.只需要声明B对象,然后就可以直接调用其方法.这一点在团队开发中尤为重要.
分享到:
评论

相关推荐

    springIoc实现原理

    **Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由...

    spring Ioc容器配置

    spring Ioc容器配置 IOC容器数据源配置 &lt;!-- 配置数据源 --&gt; destroy-method="close"&gt; &lt;value&gt;org.gjt.mm.mysql.Driver &lt;value&gt;jdbc:mysql://localhost:3306/demo &lt;value&gt;root ...

    spring ioc和aop原理流程图(详细)

    Spring 框架是Java开发中的核心框架,它主要由两个关键部分组成:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。这两个概念是Spring框架的核心特性,极大地简化了企业...

    实验一 Springioc基本操作.docx

    SpringIOC是Spring Framework中的核心组件之一,负责管理应用程序中的对象、依赖关系和生命周期。 在 Spring IOC 中,对象的创建和管理是通过 BeanFactory 或 ApplicationContext 实现的。BeanFactory 是 Spring ...

    spring ioc

    标题 "Spring IOC" 描述了我们讨论的核心主题——Spring 框架中的依赖注入(Inversion of Control,简称 IOC)机制。Spring 是一个广泛应用的 Java 应用开发框架,其核心特性之一就是IOC,它极大地简化了软件组件...

    Spring IoC加载流程讲解

    Spring IoC 加载流程讲解 在本节中,我们将对 Spring IoC 加载流程进行详细的讲解,并探讨 IoC 思想和依赖倒置原则的应用。 IoC 控制反转 IoC(Inversion of Control)是指在软件设计中,将对象实例的控制权从...

    SpringIoc示例代码

    Spring IOC,全称Inversion of Control,即“控制反转”,是Spring框架的核心特性之一。在传统的Java应用程序中,对象的创建和管理通常由开发者自己控制。而在Spring IOC中,这种控制权被反转,对象的创建、初始化、...

    spring ioc思维导图源文件

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性之一,它允许开发者将对象的创建和管理交给Spring容器来处理,从而使代码更加松耦合,更易于测试和维护。下面将详细介绍Spring IOC的基本概念、...

    SpringIOC经典Demo

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它极大地简化了Java应用的开发,通过将对象的创建和管理交由Spring容器来处理,开发者可以更专注于业务逻辑。下面,我们将深入探讨Spring IOC...

    Springioc注入Demo

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器来负责,从而实现了依赖倒置,增强了代码的可测试性和可维护性。DI(Dependency Injection,依赖注入)...

    Spring IoC依赖包

    Spring IoC,全称为Inversion of Control,即控制反转,是Spring框架的核心特性之一。它是一种设计模式,改变了传统程序中的对象创建和管理的方式,将对象的生命周期管理交由Spring容器来负责,使得代码更加解耦,...

    Spring IOC.pdf

    Spring IOC,即Spring控制反转,是Spring框架的核心特性之一。控制反转(Inversion of Control,简称IoC)是一种设计原则,用于减少代码间的耦合,提高系统模块化和代码的重用性。在Spring框架中,IOC具体体现在对...

    Spring IoC源码深度剖析开源架构源码2021.pdf

    标题《Spring IoC源码深度剖析开源架构源码2021.pdf》和描述《Spring IoC源码深度剖析开源架构源码2021.pdf》表明该文档主要面向于分析Spring框架中控制反转(IoC)容器的核心源码,解析和理解其内部的工作机制及...

    Java反射_Spring IOC

    Java反射和Spring IOC是Java开发中的两个重要概念,它们在构建灵活、可扩展的应用程序时起着关键作用。本文将深入探讨这两个主题,并提供相关的学习资源。 首先,让我们了解一下Java反射。Java反射机制是Java语言的...

    Spring Ioc 注解 依赖注入

    ### Spring IoC与注解依赖注入详解 #### 一、Spring框架简介 Spring框架是由Rod Johnson创建的一个开源项目,最初是为了解决企业级应用开发中的复杂性问题而诞生的。Spring框架的核心特性包括IoC(Inversion of ...

    手写spring ioc(三) 资源org.zip

    在本资源"手写spring ioc(三) 资源org.zip"中,我们主要关注的是如何实现一个简易版的Spring IOC(Inversion of Control)容器,它涵盖了ioc的基本功能,包括解决循环依赖、使用构造器注入以及自动注入等核心特性。...

    模拟spring ioc过程

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理职责从应用代码中分离出来,交由框架来处理。这样,开发者可以更专注于业务逻辑,而不是对象的生命周期。AOP(Aspect ...

    springIOC手写框架分析

    springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC...

    spring ioc模块手写demo

    spring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demo...

    Spring IoC讲解PPT

    **Spring 的 IoC 容器** IoC(Inversion of Control)即控制反转,是 Spring 的核心特性之一。在传统的编程模式中,对象之间存在依赖关系,程序员需要手动创建和管理这些对象。而在 Spring 中,IoC 容器负责管理和...

Global site tag (gtag.js) - Google Analytics