注意事項:
1、怎么把我們的.xml文件注入到Spring容器中?
千萬注意要在web.xml文件中,的<context-param></context-param>標(biāo)簽中配置我們自定義的.xml文件,通過<listener></listener>這個標(biāo)簽把我們配置的文件注入到Spring容器中;
2、怎么把我們的自己寫的類注入到Spring容器中?配置bean時,配置的是接口還是實現(xiàn)?
1.我們只需在Spring容器能加載到的地方配置bean就可以把自定義類加入到Spring容器中,注意:我們配置的bean是實現(xiàn)類,而不是接口!!
2.我們可以直接在我們的impl類中配置@service,把相應(yīng)的類注入到spring容器中。
切記這兩種方式都可以注入
說明:在配置文件中配置bean,其實就是在Spring容器中注入類,這個類在Spring容器中有唯一一個表示id,我們可以通過Spring容器去管理這個類,非常方便(類似ios中的ARC自動釋放池);
<!--注意:一旦在配置文件中配置bean映射,則配置的這個class就會被注入到Spring容器中,我們可以在程序中直接只用這個類,比如@Autowired為什么能夠自動寫入get/set方法,就是因為當(dāng)前類已經(jīng)注入到Spring容器中了, 當(dāng)然我們也可以在程序中通過id(不通過Spring容器),找到類對應(yīng)的對象,去處理相關(guān)的東西 -->
<!-- 這個配置的含義是:程序開始執(zhí)行org.springframework.web.servlet.view.InternalResourceViewResolver這個類,并設(shè)置這個類中的prefix屬性值為/,suffix屬性值為.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 使用前綴和后綴 -->
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean
總結(jié)剛學(xué)的關(guān)于spring的xml配置bean的知識。** 在ApplicationContext.xml文件中使用bean節(jié)點配置bean,bean的屬性id在IOC容器中必須是唯一的
<bean id="helloWorld" class="com.test.spring.beans.HelloWorld">
<property name="name" value="Spring"></property>
</bean>
依賴注入有三種方式
屬性注入
構(gòu)造方法注入
工廠方法注入(很少使用,不推薦,本文不再介紹)
屬性注入
??通過 setter 方法注入Bean 的屬性值或依賴的對象。屬性注入使用 <property>
元素, 使用 name 屬性指定 Bean 的屬性名稱,value 屬性或 <value>
子節(jié)點指定屬性值 。屬性注入是實際應(yīng)用中最常用的注入方式。HelloWorld類中的setName()方法,對應(yīng)上邊代碼中的name屬性,例如:把setName()方法名改為setName2(),property中的name屬性值為name時則會報錯,需要將name屬性改為name2。
構(gòu)造方法
??構(gòu)造方法注入Bean 的屬性值或依賴的對象,它保證了 Bean 實例在實例化后就可以使用。 ??構(gòu)造器注入在 <constructor-arg>
元素里聲明屬性, <constructor-arg>
中沒有 name 屬性。使用value屬性值或value子節(jié)點為屬性賦值。可以同時使用索引 index 和type屬性對應(yīng)為哪個屬性賦值。index的值表示構(gòu)造函數(shù)中參數(shù)的位置。type表示成員屬性的類型,例如type="double"
或者type="Java.lang.String"
<bean id="car" class="com.test.spring.beans.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="ShangHai" index="1"></constructor-arg>
<constructor-arg value="300000" type="double"></constructor-arg>
</bean>
集合屬性
當(dāng)注入的屬性是集合時,Spring也提供了通過一組內(nèi)置的 xml 標(biāo)簽(例如: <list>, <set> 或 <map>) 來配置集合屬性。
??配置 java.util.List 類型的屬性, 需要指定 <list> 標(biāo)簽, 在標(biāo)簽里包含一些元素. 這些標(biāo)簽可以通過 <value> 指定簡單的常量值, 通過 指定對其他 Bean 的引用. 通過<bean> 指定內(nèi)置 Bean 定義. 通過 指定空元素. 甚至可以內(nèi)嵌其他集合.
??數(shù)組的定義和 List 一樣, 都使用 <list>配置 java.util.Set 需要使用 <set> 標(biāo)簽, 定義元素的方法與 List 一樣。
<!-- 測試如何配置集合屬性 -->
<bean id="persion3" class="com.test.spring.beans.collection.Persion">
<property name="name" value="Mike"></property>
<property name="age" value="27"></property>
<property name="cars">
<!-- 使用list節(jié)點為list類型的屬性賦值 -->
<list>
<ref bean="car"/>
<ref bean="car2"/>
</list>
</property>
</bean>