繼上次配置Spring完成后,我們來創建一個簡單的例程來理解Spring中利用beans.xml創建應用上下文的方法。
程序路徑包為:com.spring.kinghts(kinght單詞拼寫錯誤,怕麻煩就沒有重構)
首先,我們創建兩個接口:Knight(英雄)與ToDo(做什么)。代碼如下:
package com.spring.kinghts;
public interface Knight {
public void doWhat();
}
package com.spring.kinghts;
public interface ToDo {
public void toDo();
}
接下來,創建兩個上述接口的實現類:Knight_guanyu(關羽)與ToDo_guanyu_drink(關羽喝酒)。代碼如下:
package com.spring.kinghts;
public class Knight_guanyu implements Knight{
private ToDo todo;
public Knight_guanyu(ToDo todo){
this.todo=todo;
}
@Override
public void doWhat() {
todo.toDo();
}
}
關羽類的構造器中傳入了ToDo接口引用對象,目的是為了實現依賴構造三種方法中其一(構造器依賴),以降低耦合度。
package com.spring.kinghts;
public class ToDo_guanyu_drink implements ToDo{
@Override
public void toDo() {
System.out.println("我可以喝酒");
}
}
接下來創建beans.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.xsd"> <bean id="knight" class="com.spring.kinghts.Knight_guanyu"> <constructor-arg ref="todo"/> </bean> <bean id="todo" class="com.spring.kinghts.ToDo_guanyu_drink"> </bean> </beans>
第一個<bean>中,注入了Knight_guanyu bean,第二個<bean>中,創建ToDo_guanyu_drink bean。在這里,Knight_guanyu bean在構造的時候傳入了ToDo_guanyu_drink bean的引用。
最后,創建KnightMain類來加載包含Knight的Spring上下文。代碼如下:
package com.spring.kinghts;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class KnightMain {
public static void main(String[] args) throws Exception{
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Knight_guanyu obj=(Knight_guanyu) context.getBean(Knight.class);
obj.doWhat();
}
}
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");作用是加載Spring上下文
Knight_guanyu obj=(Knight_guanyu) context.getBean(Knight.class);作用是獲取knight bean
obj.doWhat();作用是使用knight
熱愛分享拒絕拿來主義,博客精神永存——cvrigo
2016-11-07 23:24:37
