Spring 學習筆記(三)IOC之XML方式配置 第二回Bean節點屬性的配置
阿新 • • 發佈:2018-12-16
<?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.xsd"> <!-- scope:單例(singleton)/多例(prototype)/每一個請求建立一個例項(request)/每一個會話建立一個例項(session) 使用單例還是多例,得看物件的成員變數是否要再多個執行緒之間共享, 預設為單例(singleton) init-method 初始化時呼叫的方法, 在構造物件之後 destroy-method 銷燬物件時呼叫的方法,不知道JVM回收時會不會呼叫 --> <bean id="sadamu" class="org.spring.example.Sadamu" scope="singleton" init-method="init" destroy-method="destroy"> <!--<property name="Kazhafei" ref="kazhafei" />--> <!--EL表示式 可以是物件、物件屬性#{kazhafei.name}、字串等#{'abc'}--> <property name="Kazhafei" value="#{kazhafei}" /> </bean> <!--建立物件kazhafei--> <bean id="kazhafei" class="org.spring.example.Kazhafei"> <!--通過建構函式引數的方式傳遞--> <constructor-arg index="0" ref="sadamu" /> </bean> </beans>
scope
- 不賦值預設為單例(singleton)
- prototype:多例, 獲取一次就建立一個新物件
- request:每一個請求建立一個例項
- session:每一個回話建立一個例項
- 使用單例還是多例,得看物件的成員變數是否要再多個執行緒之間共享
init-method與destroy-method
- 物件初始化與被銷燬時執行的方法
- init-method會在構造方法之後執行
Setter方式注入
在bean標籤下寫property標籤,name為屬性名稱,測試了下首字母不區分大小寫 -,-
普通方式是用ref賦值,直接寫其他已經配置的javabean
spEL表示式使用value屬性,物件:#{beanName} ,字串:#{'字串'}
構造方式注入
在需要注入物件的建構函式中新增屬性、引數。
private Sadamu sadamu;
public Kazhafei(Sadamu sadamu) {
System.out.println("卡扎菲初始化");
System.out.println(String.format("薩達姆在卡扎菲處初始化:【%s】", sadamu));
}
XML中配置,index代表引數所在索引(從0開始).,ref還是表示javaBean的名稱
<!--建立物件kazhafei-->
<bean id="kazhafei" class="org.spring.example.Kazhafei">
<!--通過建構函式引數的方式傳遞-->
<constructor-arg index="0" ref="sadamu" />
</bean>
其他各型別的注入,就是給物件屬性賦值
<!--建立物件kazhafei-->
<bean id="kazhafei" class="org.spring.example.Kazhafei">
<!--通過建構函式引數的方式傳遞-->
<constructor-arg index="0" ref="sadamu"/>
<property name="物件">
<ref bean=""/>
</property>
<property name="陣列">
<array>
<value>1</value>
<value>2</value>
<value>3</value>
</array>
</property>
<property name="Map">
<map>
<entry key="k1" value="a"/>
<entry key="k1" value="a"/>
</map>
</property>
<property name="List">
<list>
<value>l1</value>
<value>l2</value>
</list>
</property>
<property name="Properties">
<props>
<prop key="name">張三</prop>
</props>
</property>
</bean>