1. 程式人生 > >JavaEE Bean的裝配方式——基於XML的裝配

JavaEE Bean的裝配方式——基於XML的裝配

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例項