JavaEE Bean的裝配方式——基於XML的裝配
阿新 • • 發佈:2018-12-30
Bean的裝配可以理解為依賴關係注入,Bean的裝配方式有三種。如:基於XML的裝配,基於註解的裝配和自動裝配(其中最常用的是基於註解的裝配),今天就來練習基於XML的裝配
而Spring提供了兩種基於XML的裝配方式:設值注入和構造注入
使用設值注入時在Spring配置檔案中,需要使用<bean>元素的子元素<property>來為每個屬性注入值,
而使用構造注入時,在配置檔案中,需要使用<bean>元素的子元素<constructor-arg>來定義構造方法的引數,可以使用其value屬性來設定該引數的值。下面通過一個案例來學習基於XML方式的Bean裝配
1、在專案chapter02的src目錄下,建立一個com.itheima.assemble包,在該包中建立User類,並在類中定義username、password和list集合三個屬性及其對應的setter方法,如下面程式碼所示:
package com.itheima.assemble; import java.util.List; public class User { private String username; private Integer password; private List<String> list; /** * 使用構造注入 * 提供帶所有引數的構造方法 */ public User(String username,Integer password,List<String> list) { super(); this.password=password; this.username=username; this.list=list; } /** * 使用設定注入 * 預設的空參構造方法 * 為所有屬性提供setter方法 */ public User() { super(); } public void setUsername(String username) { this.username = username; } public void setPassword(Integer password) { this.password = password; } public void setList(List<String> list) { this.list = list; } @Override public String toString() { return "User [username=" +username +",passeord=" +password +",list=" +list +"]"; } }
2、在com.itheima.assemble包中,建立配置檔案beans5.xml,在配置檔案中通過構造注入和設值注入的方式來裝配User類的例項,程式碼如下:
<?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-4.3.xsd"> <!-- 使用構造注入方式裝配User例項 --> <bean id="user1" class="com.itheima.assemble.User"> <constructor-arg index="0" value="tom" /> <constructor-arg index="1" value="123456" /> <constructor-arg index="2"> <list> <value>"constructorvalue1"</value> <value>"constructorvalue2"</value> </list> </constructor-arg> </bean> <!-- 使用設定注入方式裝配User例項 --> <bean id="user2" class="com.itheima.assemble.User"> <property name="username" value="張三"></property> <property name="passeord" value="654321"></property> <property name="list"> <list> <value>"setlistvalue1"</value> <value>"setlistvalue2"</value> </list> </property> </bean> </beans>
3、在com.itheima.assemble包中,建立測試類XmlBeanAssembleTest,在類中分別獲取並輸出配置檔案中的user1和user2例項,如下面程式碼所示:
package com.itheima.assemble;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class XmlBeanAssmebleTest {
private static ApplicationContext beanlizi;
public static void main(String[] args) {
String xmlPath = "com/itheima/assemble/beans5.xml";
beanlizi = new ClassPathXmlApplicationContext(xmlPath);
System.out.println(beanlizi.getBean("user1"));
System.out.println(beanlizi.getBean("user2"));
}
}
4、執行程式,控制檯輸出為下圖所示:
從上圖中我們可以看到已經成功的使用基於XML裝配的構造注入和設定注入兩種方式裝配了User例項