下面的例子定义了一个Spring的简单实现,在这个实现中,有一个接口和两个实现类,以及一个客户端的调用类。
(1)首先是IFruit接口的定义,在这个接口中,声明一个方法countPayout()。该方法用来统计购买水果的费用情况。
源代码:IFruit.java
package org.nitpro.Spring;
public interface IFruit {
public void countPayout();
}
(2)定义Apple实现类,Apple是IFruit接口的实现
源代码:Apple.java
package org.nitpro.Spring;
public class Apple implements IFruit {
private String price;
private String number;
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public void countPayout() {
String strPrice=this.getPrice();
String strNum=this.getNumber();
if(strPrice==null||strNum.equals("")){
strPrice="0.0";
}
double d_price=Double.parseDouble(strPrice);
double d_num=Double.parseDouble(strNum);
double payout=d_price*d_num;
System.out.println("购买"+strNum+"斤苹果,支出RMB"+payout);
}
}
在Apple类中,实现了IFruit接口中的countPayout()方法,在coutPayout()方法中,使用了两个方法getPrice()和getNumber(),这两个方法分别对应price和number属性,price和number属性的值将依赖于我们在
applicationContext.xml文件相关节点的定义。
(3)定义Pear类,同Apple类一样,Pear类实现了IFruit接口。
源代码:Pear.java
package org.nitpro.Spring;
public class Pear implements IFruit {
private String price;
private String number;
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public void countPayout() {
String strPrice=this.getPrice();
String strNum=this.getNumber();
if(strPrice==null||strNum.equals("")){
strPrice="0.0";
}
double d_price=Double.parseDouble(strPrice);
double d_num=Double.parseDouble(strNum);
double payout=d_price*d_num;
System.out.println("购买"+strNum+"斤梨,支出RMB"+payout);
}
}
(4)Spring配置文件
源代码: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.0.xsd">
<bean id="Fruit" class="org.nitpro.Spring.Apple">
<property name="price" value="2.50"></property>
<property name="number" value="5"></property>
</bean>
</beans>
(5)客户端测试类的代码
源代码:TestA.java
package org.nitpro.Spring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class TestA {
public void testFruit(){
ApplicationContext ctx=new FileSystemXmlApplicationContext("src/applicationContext.xml");
IFruit fruit=(IFruit)ctx.getBean("Fruit");
fruit.countPayout();
}
public static void main(String[] args) {
TestA t=new TestA();
t.testFruit();
}
}
如果需要IFruit接口实现指定为Pear,直接修改Spring配置文件的节点即可,而不需要改动程序代码
<bean id="Fruit" class="org.nitpro.Spring.Pear">