Spring 學習筆記 - 1

Spring學習之 簡介

1、Spring 管理的Bean默認是單例的,使用scope="protoType"則爲多實例,但是該Bean對象下的依賴還是單例的。

2、Spring 注入方式:

屬性注入:

<property name="age" value="25"></property>

構造方法注入:(順序+索引)

順序:<constructor-arg type="int" value="25"></constructor>

索引:<constructor-arg index="0" value="25"></constructor>

非靜態工廠方法注入:

<bean id="peopleFactory" classs="com.zhagener.factory.PeopleFactory"></bean>
<bean id="people" factory-bean="peopleFactory" factory-method="creatPeople"></bean>

靜態工廠方法注入:

<bean id="people" factory-bean="peopleFactory" factory-method="creatPeople"></bean>

泛型依賴注入:

3、Spring 參數注入方式:

基本類型注入:

<property name="age" value="25"></property>

引用類型注入:

<property name="dog" ref="dog_spring_id"></property >

內部Bean注入:

<bean name="people" class="com.zhagener.entity.People">

<property name="name" value="zhansan"></property>

<property name="dog">

<bean class="com.zhagener.entity.Dog">

<property name="name" value="Tom"></property>

</bean>

</property >

</bean>

null值:

<bean name="people" class="com.zhagener.entity.People">
<property name="name" value="zhangsan"></property>
<property name="dog">
<null></null>
</property>

</bean>

級聯注入:(級聯注入時,Dog對象必須在People類中實例化)

<bean name="people" class="com.zhagener.entity.People">

<property name="name" value="zhansan"></property>

<property name="dog.name" value="Jack2"></property >  

</bean>

集合注入:


<bean name="people" class="com.zhagener.entity.People">
<property name="name" value="zhansan"></property>
<property name="dog.name" value="Jack2"></property >  
<property name="hobbies">
<list>
<value>唱歌</value>
<value>跳舞</value>
</list>
</property>
<property name="loves">
<set>
<value>唱歌</value>
<value>跳舞</value>
</set>
</property>
<property name="works">
<map>
<entry>
<key><value>白天</value></key>
<value>上班</value>
</entry>
<entry>
<key><value>晚上</value></key>
<value>睡覺</value>
</entry>
</map>
</property>
<property name="addresses">
<props>
<prop key="address_1">aaaa</prop>
<prop key="address_2">bbbb</prop>
</props>
</property>

</bean>

4、Spring 自動裝配的三種方式:

default-autowire="byName"
default-autowire="byType"
default-autowire="constructor"

注意:自動裝配機制慎用,它屏蔽了裝配細節,容易產生潛在的錯誤。

5、Spring 方法注入:

每次People是一個實例,每次Dog也是一個實例的實現方法:
1、將People類聲明爲abstract類,將getDog方法聲明爲abstract方法。
2、在bean.xml中配置如下:
<lookup-method name="getDog" bean="dog">
</lookup-method>

6、Spring 方法替換:

People1 改調用People2的getDog方法
1、People2必須 implements MethodReplacer
2、<replaced-methodname="getDog" replacer="people2" />

7、Spring Bean之間的關係

繼承:

<bean id="abstractpeople" class="com.zhagener.entity.People" abastract="true">
<property name="className" value="高三19班"></property>
<property name="age" value="20"></property>
</bean>

<bean id="zhansan" parent="abstractPeople">
<property name="id" value="1"></property>
<property name="name" value="zhansan"></property>
<property name="age" value="30"></property>
</bean>

依賴:

depend-on="bean_spring_id" 先加載所依賴的對象


引用:

<property name="dog" ref="dog_spring_id"></property>


8、bean 作用範圍:

singleton 容器中僅有一個Bean實例,Bean以單例的方式存在;

prototype 每次從容器中調用Bean時,都返回一個新的實例;

request 每次HTTP請求都會創建一個新的Bean;

session 同一個HTTP Session共享一個Bean;

global session 同一個全局Session共享一個Bean,一般用於portlet應用環境;

application 同一個Application共享一個Bean;















3、加載Spring

ApplicationContext applicationContext = new ClassPathXmlApplication("beans.xml")

applicationContext.getBean(bean_spring_id);



<entry>
<key><value>白天</value></key>
<value>上班</value>
</entry>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章