IOC介面Bean屬性注入XML
阿新 • • 發佈:2020-10-22
一:什麼是Bean管理:
-
Bean管理指的是;兩個操作:
-
Spring建立物件
-
Spring注入屬性
二:基於XML方式建立物件
<bean id="user" class="com.spring_test.User"></bean>
1)在配置檔案中,使用bean標籤,標籤裡面新增對應屬性,就可以實現物件的建立
2)bean中常用的屬性:
-
id屬性:唯一標識,就是你建立的物件名是什麼,id就填什麼
-
class屬性:類全路徑(包含類路徑)
-
name屬性:其實跟id一樣,就是name可以新增一些特殊符號
-
注意:建立物件的時候,預設也是執行無引數構造方法建立的
三:基於XML方式注入屬性:
(1)DI:依賴注入,就是注入屬性
1)第一種注入方式:使用set方法注入,在XML中使用property完成對屬性的注入,依次類推,舉一反三
Book類:
public class Book{ private String bname; public void setBname(String bname){ this.bname=bname; } }
xml配置注入以及建立:
<!--建立Book物件建立--> <beanid="book" class="com.spring_test"> <!--使用property完成屬性注入 name:類裡面屬性名稱 value:向屬性注入的值 --> <property name="bname" value="hanxiao"></property> </bean>
注意:如何獲取配置建立的物件
Book book=content.getBean("book",Book.class); //這裡是將Bean返回後的物件轉換程class的形式
2)第二種注入方式:通過有參構造進行XML注入
也就是在上面的Book中加一個帶有引數的建構函式就好了
<bean id="book" class="com.spring_test"> <!-- 比如這裡有只有一個有參構造,注入dname 使用constructor-arg標籤來獲取有參構造的引數以及注入的值 name:建構函式中的屬性名稱 index:有參構造中引數的個數次序 value:屬性名稱的值 下面這兩句話是等效的 --> <constructor-arg name="dname" value="myname"></constructor-arg> <constructor-arg index="1" value="myname"></constructor-arg> </bean>
3)
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!--這一步就是進行了一個對p的約束宣告--> xmls:p="http://www.w3.org/2001/XMLSchema-instance/p" <!--然後就可以在bean建立物件的時候在後面直接傳入引數就好--> <bean id="hello" class="com.spring_test.Hello" p:bname="hanxiao"></bean> </beans>
主要步驟:在約束宣告中加上對p的宣告,然後再建立的物件後面使用p:引數=“引數值”