`
Supanccy2013
  • 浏览: 225090 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring的控制反转(依赖注入),及两种注入方式

 
阅读更多
1,提供构造函数来让spring实现构造注入
    public class PersonService {
	private String name;
    //提供bean的构造函数,让spring用构造注入的方式来构造cibean
	public PersonService(String name) {
        this.name = name;
	}
	public void info(){
		System.out.println("此人的名字为:" + name);
	}
      }

2,提供setter函数来让spring实现setter注入
   package com.supan.spring;
   public interface Person {
	public void useAxe();
   }
   package com.supan.spring;
   public interface Axe {
	public String chop();
   }
   package com.supan.spring;
   public class StoneAxe implements Axe {
	public String chop() {
		return "石斧砍柴好慢";
	}
   }
 package com.supan.spring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
[color=red]//实现ApplicationContextAware接口让该bean持有了容器的引用。[/color]
public class Chinese implements Person,ApplicationContextAware {
	private ApplicationContext  atx;
	private Axe axe;
	public Axe getAxe() {
		return axe;
	}
	public void setAxe(Axe axe) {
		this.axe = axe;
	}
	public void useAxe() {
         System.out.println(axe.chop());
	}
	@Override
	public void setApplicationContext(ApplicationContext atx) 
			throws BeansException {
		this.atx = atx;
	}
	public ApplicationContext getContext(){
		return atx;
	}
}

3,spring配置文件
    <beans xmlns="http://www.springframework.org/schema/beans"    
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
    xmlns:tx="http://www.springframework.org/schema/tx"    
    xmlns:aop="http://www.springframework.org/schema/aop"    
    xmlns:context="http://www.springframework.org/schema/context"    
    xsi:schemaLocation="http://www.springframework.org/schema/aop       
      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd     
      http://www.springframework.org/schema/beans       
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
      http://www.springframework.org/schema/context     
      http://www.springframework.org/schema/context/spring-context-3.0.xsd     
      http://www.springframework.org/schema/tx       
      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">   
      <bean id="personService" class="PersonService">
         <!-- 采用构造注入的方式 -->
         <constructor-arg index="0" value="chenchaoyang"></constructor-arg>
      </bean>
      <bean id="chinese" class="com.supan.spring.Chinese">
           <!-- 采用setter注入的方式 -->
           <property name="axe" ref="stoneAxe"></property>
      </bean>
      <bean id="stoneAxe" class="com.supan.spring.StoneAxe"></bean>
     </beans>

3,测试类;
  import org.springframework.context.ApplicationContext;
  import org.springframework.context.support.ClassPathXmlApplicationContext;
  import com.supan.spring.Person;
  public class SpringTest {
	public static void main(String[] args) {
		//创建spring的ApplicationContext
		ApplicationContext ctx = new    
           ClassPathXmlApplicationContext("applicationContext.xml");
		PersonService p =       
          ctx.getBean("personService",PersonService.class);
	    p.info();
         System.out.println(p2.getContext() == ctx);
	    Chinese p2 = ctx.getBean("chinese",Chinese.class);
        p2.useAxe();	    
		System.out.println(ctx);
	}
  }

4,结果:
   此人的名字为:chenchaoyang
   石斧砍柴好慢
分享到:
评论

相关推荐

    Spring Ioc 注解 依赖注入

    Spring IoC容器主要通过两种方式实现依赖注入: 1. **构造器注入**:通过类的构造方法来注入依赖项。 2. **设值注入**:通过setter方法来注入依赖项。 #### 四、使用注解进行依赖注入 随着Spring框架的发展,除了...

    自己实现的Spring反转控制和依赖注入

    Spring框架是Java开发中广泛应用的一个开源框架,以其优秀的反转控制(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)理念为核心,极大地简化了企业级应用的开发工作。下面将详细介绍这两个...

    spring 控制反转的模拟程序

    在Spring框架中,控制反转主要通过两种方式实现:构造器注入和setter注入。构造器注入是在创建对象时通过构造函数传入依赖,而setter注入则是在对象创建后通过setter方法设置依赖。这两种方式都可以帮助我们解耦代码...

    Spring 核心机制(依赖注入)

    依赖注入主要有两种实现方式:设值注入(Setter Injection)和构造注入(Constructor Injection)。 ##### 5.1 设值注入 设值注入是指通过setter方法传入被调用者的实例。这种方式简单直观,易于理解和实现,因此在...

    spring依赖注入的实现原理

    在Spring框架中,依赖注入是核心特性之一,通过控制反转(Inversion of Control,IoC)实现了组件之间的解耦。 ### 依赖注入的基本概念 依赖注入允许开发者在不修改代码的情况下,通过配置来改变对象间的依赖关系。...

    helloIoc.zip spring ioc控制反转简单测试代码

    Spring框架的核心特性之一就是依赖注入(Dependency Injection,简称DI),它通过控制反转(Inversion of Control,简称IOC)实现。这个"helloIoc.zip"压缩包包含的是一组用于演示Spring IOC基本概念和使用的测试...

    理解Spring中的依赖注入和控制反转

    在Spring框架中,依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)是核心设计理念,它们旨在降低组件之间的耦合度,提高代码的可测试性和可维护性。理解这两个概念对于掌握...

    Spring Ioc(依赖注入)入门例子--属性注入

    Spring的核心特性之一就是它的Inversion of Control(IoC,控制反转)容器,也被称为Dependency Injection(DI,依赖注入)。这个概念是Spring框架使应用程序组件之间解耦的关键。让我们深入探讨一下Spring的IoC和...

    IoC Spring 控制反转

    Spring提供了两种类型的IoC容器:`BeanFactory`和`ApplicationContext`。`BeanFactory`是最基本的容器,而`ApplicationContext`则提供了更多的高级特性,如国际化支持、事件发布机制等。 #### 六、IoC与服务定位器...

    Spring基础实例(依赖注入和控制反转)

    本实例主要探讨Spring框架的基础概念,包括依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)。这两个概念是Spring的核心特性,它们极大地简化了代码的维护和管理,提高了软件...

    使用反射和注解模拟Spring的依赖注入

    在Java编程中,Spring框架是应用最广泛的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)容器。这篇博客"使用反射和注解模拟Spring的依赖注入"探讨了如何通过基本的Java特性来实现...

    Spring——IOC(控制反转)与DI(依赖注入).docx

    Spring框架中的IOC(控制反转)和DI(依赖注入)是两种关键的设计模式,它们极大地提升了软件的可维护性和可扩展性。控制反转是一种设计思想,它改变了传统的对象创建方式,将对象的创建和管理权从应用程序自身转移...

    IOC控制反转&DI依赖注入

    在软件开发领域,IOC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)是两种重要的设计模式,特别是在Java和Spring框架中被广泛使用。这些概念有助于提高代码的可测试性、可维护性和模块...

    spring控制反转的理解

    Spring框架的核心特性之一是控制反转(Inversion of Control,IoC),这与依赖注入(Dependency Injection,DI)密切相关。这两个概念都是为了实现软件组件之间的松耦合,从而提高系统的可扩展性和可维护性。 控制...

    实例讲解Java的Spring框架中的控制反转和依赖注入

    在Java的Spring框架中,控制反转(IoC,Inversion of Control)和依赖注入(DI,Dependency Injection)是核心设计理念,它们旨在降低组件之间的耦合度,提高代码的可测试性和可维护性。Spring框架通过IoC容器来管理...

    依赖注入控制反转面向切面.doc

    控制反转是依赖注入的一种实现方式,它将对象的创建和管理的权利反转给了一个外部容器,即所谓的IoC容器。在没有IoC的情况下,`Coder`类的依赖关系是在代码中硬编码的,而在IoC模式下,这些依赖关系是在运行时由IoC...

    Spring IOC的注入方式总结

    在Spring中,IOC的主要实现方式有两种:依赖注入(Dependency Injection,简称DI)和基于接口的配置。下面将对这两种方式进行详细阐述。 一、依赖注入(Dependency Injection) 1. **构造器注入**:通过构造函数来...

    Spring 依赖注入

    在Java开发领域,Spring框架是应用最广泛的轻量级框架之一,它以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC)特性著称。本文将深入探讨Spring框架中的依赖注入,...

    Spring .Net 控制反转

    总的来说,Spring .Net 的控制反转和依赖注入特性极大地提升了 .Net 应用程序的可维护性和可测试性。通过合理地配置和使用 IoC 容器,开发者可以构建出更加灵活、解耦的系统,同时简化单元测试和组件集成的过程。在...

    Spring依赖注入原理解析.doc

    Spring通过两种主要方式实现依赖注入:设值注入和构造注入。 设值注入是通过setter方法来传递被调用者实例。例如,在上述示例中,`Chinese`类实现了`Person`接口,它依赖于`Axe`接口的实现。`Chinese`有一个`setAxe...

Global site tag (gtag.js) - Google Analytics