如何確認spring容器建立了某個物件
阿新 • • 發佈:2019-02-11
如果監聽器載入了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建立容器後,某個物件是否建立!!