1 //定義Person接口 2 public interface Person 3 { 4 //Person接口裏定義一個使用斧子的方法 5 public void useAxe(); 6 }
1 //定義Axe接口 2 public interface Axe 3 { 4 //Axe接口裏有個砍的方法 5 public void chop(); 6 }
1 //Chinese實現Person接口 2 3 public class Chinese implements Person 4 { 5 //面向Axe接口編程,而不是具體的實現類 6 private Axe axe; 7 //默認的構造器 8 public Chinese() 9 {} 10 //設值注入所需的setter方法 11 public void setAxe(Axe axe) 12 { 13 this.axe = axe; 14 } 15 //實現Person接口的useAxe方法 16 public void useAxe() 17 { 18 System.out.println(axe.chop()); 19 } 20 }
1 //Axe的第一個實現類 StoneAxe 2 3 public class StoneAxe implements Axe 4 { 5 //默認構造器 6 public StoneAxe() 7 {} 8 //實現Axe接口的chop方法 9 public String chop() 10 { 11 return "石斧砍柴好慢"; 12 } 13 }
1 <!-- 下面是標準的XML文件頭 --> 2 <?xml version="1.0" encoding="gb2312"?> 3 <!-- 下面一行定義Spring的XML配置文件的dtd --> 4 "http://www.springframework.org/dtd/spring-beans.dtd"> 5 <!-- 以上三行對全部的Spring配置文件都是相同的 --> 6 <!-- Spring配置文件的根元素 --> 7 <BEANS> 8 <!—定義第一bean,該bean的id是chinese, class指定該bean實例的實現類 --> 9 <BEAN class="lee".Chinese id=chinese> 10 <!-- property元素用來指定須要容器注入的屬性,axe屬性須要容器注入此處是設值注入,所以Chinese類必須擁有setAxe方法 --> 11 12 <property name="axe"> 13 <!-- 此處將另外一個bean的引用注入給chinese bean --> 14 <REF local="」stoneAxe」/"> 15 </property> 16 </BEAN> 17 <!-- 定義stoneAxe bean --> 18 <BEAN class="lee".StoneAxe id=stoneAxe /> 19 </BEANS>
1 public class BeanTest 2 { 3 //主方法,程序的入口 4 public static void main(String[] args)throws Exception 5 { 6 //由於是獨立的應用程序,顯式地實例化Spring的上下文。 7 ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); 8 //經過Person bean的id來獲取bean實例,面向接口編程,所以 9 //此處強制類型轉換爲接口類型 10 Person p = (Person)ctx.getBean("chinese"); 11 //直接執行Person的userAxe()方法。 12 p.useAxe(); 13 } 14 }
1 <?xml version="1.0"?> 2 <!-- 定義編譯該項目的基本信息--> 3 <PROJECT name="spring" default="." basedir="."> 4 <!-- 定義編譯和運行該項目時所需的庫文件 --> 5 <PATH id=classpath> 6 <!-- 該路徑下存放spring.jar和其餘第三方類庫 --> 7 <FILESET dir=../../lib> 8 <INCLUDE name="*.jar" /> 9 </FILESET> 10 <!-- 同時還須要引用已經編譯過的class文件--> 11 <PATHELEMENT path="." /> 12 </PATH> 13 <!-- 編譯所有的java文件--> 14 <TARGET description="Compile all source code" name="compile"> 15 <!-- 指定編譯後的class文件的存放位置 --> 16 <JAVAC debug="true" destdir="."> 17 deprecation="false" optimize="false" failonerror="true"> 18 <!-- 指定須要編譯的源文件的存放位置 --> 19 <SRC path="." /> 20 <!-- 指定編譯這些java文件須要的類庫位置--> 21 <CLASSPATH refid="classpath" /> 22 </JAVAC> 23 </TARGET> 24 <!-- 運行特定的主程序 --> 25 <TARGET description="run the main class" name="run" depends="compile"> 26 <!-- 指定運行的主程序:lee.BeanTest。--> 27 <JAVA failonerror="true" fork="yes" classname="lee.BeanTest"> 28 <!-- 指定運行這些java文件須要的類庫位置--> 29 <CLASSPATH refid="classpath" /> 30 </JAVA> 31 </TARGET> 32 </PROJECT>
1 //Axe的另外一個實現類 SteelAxe 2 public class SteelAxe implements Axe 3 { 4 //默認構造器 5 public SteelAxe() 6 {} 7 //實現Axe接口的chop方法 8 public String chop() 9 { 10 return "鋼斧砍柴真快"; 11 } 12 }
1 <!-- 定義一個steelAxe bean--> 2 <BEAN class="lee".SteelAxe id=steelAxe />
<REF local="」stoneAxe」/">
<REF local="」steelAxe」/">
1 //Chinese實現Person接口 2 public class Chinese implements Person 3 { 4 //面向Axe接口編程,而不是具體的實現類 5 private Axe axe; 6 //默認的構造器 7 public Chinese() 8 {} 9 //構造注入所需的帶參數的構造器 10 public Chinse(Axe axe) 11 { 12 this.axe = axe; 13 } 14 //實現Person接口的useAxe方法 15 public void useAxe() 16 { 17 System.out.println(axe.chop()); 18 } 19 }
1 <!-- 下面是標準的XML文件頭 --> 2 <xml version="1.0" encoding="gb2312"?> 3 <!-- 下面一行定義Spring的XML配置文件的dtd --> 4 "http://www.springframework.org/dtd/spring-beans.dtd"> 5 <!-- 以上三行對全部的Spring配置文件都是相同的 --> 6 <!-- Spring配置文件的根元素 --> 7 <BEANS> 8 <!—定義第一個bean,該bean的id是chinese, class指定該bean實例的實現類 --> 9 <BEAN class="lee".Chinese id=chinese> 10 </BEAN> 11 <!-- 定義stoneAxe bean --> 12 <BEAN class="lee".SteelAxe id=steelAxe /> 13 </BEANS>