下面的例子定义了一个Spring的简单实现,在这个实现中,有一个接口和两个实现类,以及一个客户端的调用类。
(1)首先是IFruit接口的定义,在这个接口中,声明一个方法countPayout()。该方法用来统计购买水果的费用情况。
源代码:IFruit.java
- package org.nitpro.Spring;
- public interface IFruit {
- public void countPayout();
- }
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);
- }
- }
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);
- }
- }
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();
- }
- }
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">