spring學習筆記

Bean相關

使用構造函數注入

<constructor-arg value="基本參數值" />

<constructor-arg ref="其他bean的id" />

Bean的生存範圍

 

singleton(默認)

 
 

 

 
 

prototype

 
 

每次使用new一個實例

 
 

request

 
 

HTTP request範圍

 
 

session

 
 

HTTP  session

 
 

global-session

 
 

global  HTTP session

 

初始化和銷燬bean時的附加操作方法

init-method="方法名"

destroy-method="方法名"

這兩個屬性也可加在beans標籤中表示內部所有bean在啓動和銷燬時都會執行這些方法

使用setter注入bean的屬性

<property name="屬性名稱"  value="屬性值" / >

注入時spring能對屬性值根據屬性變量類型做自動類型轉換

裝配引用其他bean

<property name="..."ref="其他bean的id"/>

注入inner beans

將inner bean寫在property或constructor-arg內,不需要id

使用spring的p名字空間裝配bean

p:屬性名 = "屬性值"

p:屬性名-ref = "其他beanid"

 

裝配集合類

spring支持四種標籤

 

<list>

 
 

允許重複

 
 

<set>

 
 

保證不重複

 
 

<map>

 
 

鍵值可以是任何類型

 
 

<props>

 
 

鍵值必須是String

 

list

<property name="...">

<list>

<ref bean=".."/>

<ref bean=".."/>

...

list

<property name="...">

<set>

<ref bean=".."/>

<ref bean=".."/>

...

map

<property name="...">

<map>

<entry key=".." value-ref=".."/>

<entry key=".." value-ref=".."/>

...

key, key-ref, value, value-ref的區別

prop

<property name="...">

<props>

<prop key="..">.....</prop>

<prop key="..">.....</prop>

...

不裝配任何(null)

<prop key=".."><null/></prop>

 

用表達式(SpEL)做關聯

<property name="..."value="....#{ 表達式 }....."/>

字面量

#{5}, #{45.20}, #{1e4},  #{true}等

裝配其他bean

value="#{其他beanid}"相當於 ref="其他beanid"

裝配其他bean的屬性,或方法

value="#{beanid.beanattribute}"

value="#{beanid.beanattribute.beanmethod()}"

防止beanattribute是null而包NullPointerException的方法

value="#{beanid.beanattribute?.beanmethod()}"

T(類完全名)表示這個類,例如訪問Math常量或靜態方法:

value="#{T(java.lang.Math).PI}"

value="#{T(java.lang.Math).random()}"

 

SpEL的運算符

比較特殊的幾個:

關係lt, gt, eq, le, ge

邏輯and, or, not, |

正則matches

<util:list>標籤來源於spring的util名字空間,表示創建java.util.List對象

[]可以訪問集合成員,如

value="#{cities[2]}"

value="#{cities['Dallas']}"

獲得環境變量

value="#{systemProperties['application.home']}"

條件選擇集合類,例如選擇人口屬性大於100000的城市

value="#{cities.?[population gt 100000]}"

 

.^[]

 
 

選擇第一個元素

 
 

.$[]

 
 

選擇最後一個元素

 
 

.![x]

 
 

只返回集合中的所有x屬性(也是作爲集合返回)

 

 

自動裝配的四種類型:

通過名稱,通過類型,通過構造器,自動探測

bean標籤的primary屬性,autowire-candidate屬性,default-autowire屬性

在java代碼中使用註釋定義自動裝配

<context:annotation-config />

使用Spring的基於java的配置

 

面向切面的Spring

Spring支持5種advice,所謂advice就是aspects的目的,advice穿插在程序運行的一系列joint-point中執行,即所謂aspects-oriented-programming

 

before

 
 

被adviced的方法執行前

 
 

after

 
 

被adviced的方法執行後,不管成功與否

 
 

after-returning

 
 

被adviced的方法成功完成後執行

 
 

after-throwing

 
 

被adviced的方法拋出異常時執行

 
 

around

 
 

 

 

Spring的AOP支持

spring的advice是用java寫的

spring只支持方法級別的joint points

spring的AOP配置標籤

發佈了30 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章