`
Supanccy2013
  • 浏览: 215930 次
  • 性别: 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
   石斧砍柴好慢
分享到:
评论

相关推荐

    .NET Autofac依赖注入

    依赖注入是做什么用的? 依赖注入又称之为控制反转(Inversion of ... 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。引用自百度百科。

    基于框架的Web开发-IoC(控制反转)和DI(依赖注入)入门.doc

    1.2 IoC(控制反转)和DI(依赖注入)入门 1 传统的Java类 在工程下创建包ioc,在ioc包中创建类Test。(为了看起来清楚,将三个类写在了同一个Java文件中,其中唯一的public类为Test)。类的含义和关系如下: Car类...

    spring框架api中文版.zip(spring开发手册)

    依赖注入和控制反转 1.2。 模块 1.2.1。 核心容器 1.2.2。 数据访问/集成 1.2.3。 web 1.2.4。 AOP和仪表 1 2 5。 测试 1.3。 使用场景 1.3.1。 依赖关系管理和命名约定 Spring依赖和依靠弹簧 Maven依赖管理 艾薇...

    Spring 入门代码实例

    spring 依赖注入,设值注入和构造注入的两种实现代码。 用JUNIT做测试

    React 源码中的依赖注入方法

    一、前言 依赖注入(Dependency Injection)这个概念的兴起已经有很长时间了,把这个概念融入到框架中达到出神入化...一句话表述他们之间的关系:依赖注入是控制反转的一种实现方式。另一种方式叫依赖查找(Dependency

    Spring基础与快速入门

    4 依赖注入:建立对象与对象之间依赖关系的实现,包括接口注入、构造注入、set注入,在Spring中只支持后两种 5 AOP:面向方面编程,我们可以把日志、安全、事务管理等服务(或功能)理解成一个“方面”,那么以前...

    Spring面试题

    spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的...

    蚂蚁云客服机器人面试答案.docx

    注入方式有两种:依赖注入和设置注入; IoC的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管理对象。 AOP(Aspect Oriented Programming) (1). AOP面向方面编程基于IoC,是对OOP...

    海创软件组-Spring 核心之IoC(一)

    …IOC:控制反转依赖注入。它使程序组件或类之间尽量形成一种松耦合的结构,开发者在使用类的实列之前,需要先创建对象的实列。而IoC是将创建实列的任务交给了IOC容器,这样在开发应用代码的时候只需要直接使用类的...

    基于maven项目的SSM框架与layu前端框架的代码

    IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会...

    SSH-Jsp期末考试简答题带答案

    Spring 是一个基于Java的轻量级应用框架,它提供了IoC(控制反转)和AOP(面向方面编程)等功能。BeanFactory和ApplicationContext是Spring中的两个重要组件。BeanFactory 负责读取bean配置文档、管理bean的加载、...

    java面试题

    答:控制反转和依赖注入是spring的两大基础作用。主要是将所有组件在spring提供的外部容器中加载。提高安全性,减低耦合性,使各个框架或者类之间的依赖性降低。 什么是声明式的事务管理?为什么要用?spring如何实现...

    asp.net知识库

    体验.net2.0的优雅(四):Provider、策略、控制反转和依赖注入 泛型最佳实践 asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型...

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

Global site tag (gtag.js) - Google Analytics