1. 程式人生 > >如何確認spring容器建立了某個物件

如何確認spring容器建立了某個物件

如果監聽器載入了applicationContext.xml檔案,就會建立spring容器,相應的,也會根據配置的物件,建立物件,如果確定spring容器是否載入,可以通過以上兩種方式解決:

1、咱們自己改錯applicationContext.Xml檔案,或者web.xml檔案,此時不要管編譯錯誤,直接開啟伺服器,如果沒有報錯的話,說明沒有載入到,相應的配置檔案,然後再進行相應的處理

2、使用spring的配置物件的方法,加假如配置檔案有以下四個物件,

<!-- 簡單型別注入-構造方法注入 -->
	<bean name="user1" class="cn.itcast.domain.User"   >
		<!-- constructor-arg 屬性: 代表一個構造方法引數 
			定位屬性:
				name屬性:指定構造方法的引數名稱
				index屬性:指定引數在引數列表中的索引
				type屬性:指定引數的型別
			賦值屬性:
				value屬性:指定引數值
				ref屬性: 引用容器中的其他物件
		-->
		<constructor-arg  name="name" index="0" value="jerry" ></constructor-arg>
		<constructor-arg  name="age" type="java.lang.Integer" value="16" ></constructor-arg>
		<!-- <constructor-arg  name="car"  ref="car" ></constructor-arg> -->
	</bean>
	<!-- get/set方法注入-property標籤 -->
	<!-- 
			property元素: 代表呼叫一個set方法
				name屬性:屬性名
				value屬性:為屬性賦值(值型別)
				ref屬性:注入物件型別值
	 -->
	<bean name="user2" class="cn.itcast.domain.User" >
		<property name="name" value="jack"></property>
		<property name="age" value="18"></property>
		<property name="car" ref="car"></property>
	</bean>
	<!-- get/set方法注入-p名稱空間
			與property標籤配置性質上沒有什麼區別.
			出現時間比property標籤要晚.
		準備:引入p名稱空間 =>xmlns:p="http://www.springframework.org/schema/p" 
	 -->
	<bean name="user3" class="cn.itcast.domain.User" 
					p:name="rose" p:age="20" p:car-ref="car" >
	</bean>
	
	<!-- spel表示式 
			使用在值型別屬性賦值中
			#{user3.name} : 引用user3的name屬性值
	-->
	<bean name="user4" class="cn.itcast.domain.User" >
		<property name="name" value="#{user3.name}"></property>
		<property name="age" value="#{user2.age}"></property>
		<property name="car" ref="car"></property>
	</bean>
	
	
	<bean name="car" class="cn.itcast.domain.Car" >
		<property name="name" value="布加迪威航"></property>
	</bean>

這個時候在有參構造還有無參構造方法裡面,輸出一句話

	public User() {
		System.out.println("user物件被建立了");
	} 
	public User(String name, Integer age) {
		super();
		System.out.println("public User(String name, Integer age)");
		this.name = name;
		this.age = age;
	}
	public Car() {
		super();
		System.out.println("物件被建立了");
		// TODO Auto-generated constructor stub
	}

建立spring容器

	@Test
	public void fun1(){
		
		//1 建立spring容器
		ClassPathXmlApplicationContext ac = 
					new ClassPathXmlApplicationContext("/cn/itcast/c_injection/injection.xml");
		//2 從容器中獲得指定物件
		//User user1 = (User) ac.getBean("user1");
		//3 列印物件,看效果
		//System.out.println(user1);
	}

此時輸出的結果:

public User(String name, Integer age)
user物件被建立了
物件被建立了
user物件被建立了
user物件被建立了

結果正好與配置的物件在applicationContext.xml中出現的順序相關,我們也可以依次來判斷spring建立容器後,某個物件是否建立!!