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方法,进行后面的属性注入。

总结:
第一次开技术博客,第一次发表自己的原创文章,程序员的一个通病,会做,但是表达还有所欠缺,以后要多改进。
有问题的话大家可以互相探讨。
展开阅读全文

没有更多推荐了,返回首页