關於註解:
1.@resource 感覺要是new就在**頭上用到
2.@scope("prototype");域多為非單例
3.@component---->
@service ---->多用在service的實現類中
@controller------>用在action中
@repository ------->多用在dao的實現類中
簡介:
1、 value
, method;
uri template
模式(後面將會說明);
method: 指定請求的
method
型別,
get、
post
、put
、delete等;
2、 consumes
,produces;
consumes: 指定處理請求的提交內容型別(
content-type
),例如
produces: 指定返回的內容型別,僅當
request
請求頭中的
(accept)
型別中包含該指定型別才返回;
3、 params
,headers;
params: 指定
request
中必須包含某些引數值是,才讓該方法處理。
headers: 指定
request
中必須包含某些指定的
header
值,才能讓該方法處理請求。
@responsebody
@requestbody
將 http
請求正文插入方法中
,使用適合的
將請求體寫入某個物件。
@repository
屬於最先引入的一批,它用於將資料訪問層 (dao
層 )
的類標識為
spring bean
。具體只需將該註解標註在
dao類上即可。同時,為了讓
spring
能夠掃瞄類路徑中的類並識別出
@repository
註解,需要在
xml
配置檔案中啟用
bean
的自動掃瞄功能,這可以通過
實現。
@component
是乙個泛化的概念,僅僅表示乙個元件 (bean)
,可以作用在任何層次。
@service
通常作用在業務層,但是目前該功能與 @component
相同。
@constroller
通常作用在控制層,但是目前該功能與 @component
相同。
@autowired與@resource的區別
@autowired註解是按型別裝配依賴物件,預設情況下它要求依賴物件必須存在,如果允許null值,可以設定它required屬性為false。如果我們想使用按名稱裝配,可以結合@qualifier註解一起使用。如下:
@resource註解和@autowired一樣,也可以標註在字段或屬性的setter方法上,但它預設按名稱裝配。名稱可以通過@resource的name屬性指定,如果沒有指定name屬性,當註解標註在字段上,即預設取字段的名稱作為bean名稱尋找依賴物件,當註解標註在屬性的setter方法上,即預設取屬性名作為bean名稱尋找依賴物件。
窗體頂端
窗體底端
窗體頂端
在service類前加上@transactional,宣告這個service所有方法需要事務管理。每乙個業務方法開始時都會開啟乙個事務。
窗體頂端
spring預設情況下會對執行期例外(runtimeexception)進行事務回滾。這個例外是unchecked
如果遇到checked意外就不回滾。
窗體頂端
1 讓checked例外也回滾:在整個方法前加上 @transactional(rollbackfor=exception.class)
2 讓unchecked例外不回滾: @transactional(notrollbackfor=runtimeexception.class)
3 不需要事務管理的(只查詢的)方法:@transactional(propagation=propagation.not_supported)
在整個方法執行前就不會開啟事務
還可以加上:@transactional(propagation=propagation.not_supported,readonly=true),這樣就做成乙個唯讀事務,可以提高效率。
各種屬性的意義:
required:業務方法需要在乙個容器裡執行。如果方法執行時,已經處在乙個事務中,那麼加入到這個事務,否則自己新建乙個新的事務。
not_supported:宣告方法不需要事務。如果方法沒有關聯到乙個事務,容器不會為他開啟事務,如果方法在乙個事務中被呼叫,該事務會被掛起,呼叫結束後,原先的事務會恢復執行。
requiresnew:不管是否存在事務,該方法總匯為自己發起乙個新的事務。如果方法已經執行在乙個事務中,則原有事務掛起,新的事務被建立。
mandatory:該方法只能在乙個已經存在的事務中執行,業務方法不能發起自己的事務。如果在沒有事務的環境下被呼叫,容器丟擲例外。
supports:該方法在某個事務範圍內被呼叫,則方法成為該事務的一部分。如果方法在該事務範圍外被呼叫,該方法就在沒有事務的環境下執行。
never:該方法絕對不能在事務範圍內執行。如果在就拋例外。只有該方法沒有關聯到任何事務,才正常執行。
nested:如果乙個活動的事務存在,則執行在乙個巢狀的事務中。如果沒有活動事務,則按required屬性執行。它使用了乙個單獨的事務,這個事務擁有多個可以回滾的儲存點。內部事務的回滾不會對外部事務造成影響。它只對datasourcetransactionmanager事務管理器起效
窗體底端
spring生命週期
窗體底端
1. 容器啟動,例項化所有實現了beanfactoypostprocessor(在容器實際例項化任何其它的bean之前讀取配置元資料,並有可能修改它)介面的類。他會在 任何普通bean例項化之前載入.
2. 例項化剩下的bean,對這些bean進行依賴注入。
3. 如果bean有實現beannameaware(注入bean
的名字)的介面那麼對這些bean進行呼叫
4. 如果bean有實現beanfactoryaware(注入工廠)介面的那麼對這些bean進行呼叫
配置檔案中,所有有引用到的
bean
物件)介面的那麼對這些bean進行呼叫
6. 如果配置有實現beanpostprocessor(如果我們需要在
spring
容器完成
bean
的例項化,配置和其他的初始化後新增一些自己的邏輯處理)的bean,那麼呼叫它的 postprocessbeforeinitialization方法
7. 如果bean有實現initializingbean(為bean
提供了初始化方法的方式
)介面那麼對這些bean進行呼叫
8. 如果bean配置有init屬性,那麼呼叫它屬性中設定的方法
9. bean正常是使用
10. 呼叫disposablebean(銷毀)介面的destory方法
11. 呼叫bean定義的destory方法
Spring註解 持續更新
註解作用 引數 例子 autowired 用來裝配bean,都可以寫在字段上,或者方法上。預設情況下必須要求依賴物件必須存在,如果要允許null值,可以設定它的required屬性為false,例如 autowired required false aspect 作用是把當前類標識為乙個切面供容器讀...
記錄spring註解(持續更新)
0.conditionalo singbean conditionalo singbean conditionalonproperty value pt1 matchifmissing true bean public letter letter 以上配置為configuration配置類內容,含義...
關於Spring的註解
springmvc的核心元件 處理流程 瀏覽器向spting發出請求,請求交給前端控制器dispatcherservlet處理。執行controller元件約定的方法處理請求,在約定方法呼叫模型元件完成業務處理,約定方法可以返回乙個modelandview物件,這個物件封裝了業務處理結果資料和檢視名...