`

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

阅读更多
1、定义2个接口。(不属于例子范畴):
package com.IoC;

public interface Person {
	/**
	 * 使用斧子
	 */
	public void useAxe();
}



package com.IoC;

public interface Axe {
	/**
	 * 砍的方法
	 */
	public String chop();
}



2、实现类:
package com.IoC;

public class Chinese implements Person{
	private Axe axe;
	/**
	 * 设值注入所需的setter方法
	 * @param axe
	 */
	public void setAxe(Axe axe)
	{
		this.axe = axe;
	}

	public void useAxe() {
		System.out.println(axe.chop());
	}
}



package com.IoC;

public class StoneAxe implements Axe{

	public String chop() {
		return "这是一把砍得很慢的破斧子!";
	}

}



3、applicationContext.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 以上是全部Spring都一样的配置文件 、beans是根元素-->
  <bean name="chinese" class="com.IoC.Chinese">
     <property name="axe">
       <ref local="StoneAxe"/><!-- 如果注入的是基本类型则用value、如果是引用类型则使用ref -->
     </property>
  </bean>
  <bean id="StoneAxe"  class="com.IoC.StoneAxe"></bean>
</beans>


4、测试类:
package com.IoC;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.*;


public class testIoC {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext ctx = new FileSystemXmlApplicationContext("/src/applicationContext.xml");
		Person per = (Person)ctx.getBean("chinese");
		per.useAxe();
	}

}



5、主要原理:
       StoneAxe类有一个使用斧子的方法,而chinese类是使用斧子的人。
xml里面申明2个bean,但是StoneAxe是chinese的一个属性,但是上面也有说到,value用于基本类型,而ref用于引用类型。运行chinese的时候,提供调用useAxe()进行使用“斧子”,而要引进StoneAxe则通过seter方法,进行后面的属性注入。

总结:
    第一次开技术博客,第一次发表自己的原创文章,程序员的一个通病,会做,但是表达还有所欠缺,以后要多改进。
    有问题的话大家可以互相探讨。
  • src.rar (1.7 KB)
  • 下载次数: 32
4
0
分享到:
评论
1 楼 daiezhu 2011-12-14  
你第一次写就写得很好啊,注释和命名都很恰当,cool

相关推荐

Global site tag (gtag.js) - Google Analytics