spring 註解積累

2021-09-02 11:51:23 字數 1530 閱讀 5078

用註解來向spring容器註冊bean。

1:@repository 標註在持久層,即dao,用於標註資料訪問。

2:@service 標註在業務層,即service,用於標註業務邏輯。

3:@controller 標註在控制層。

4:@component 當不明確這個類屬於那個層的時候,可以使用@component進行標註,但不建議使用

5:@autowired 屬性加上@autowired後不需要getter()和setter()方法,spring會自動注入。

@autowired(required=false)表示,如果spring上下文中沒有找到該型別的bean時,才會使用new serviceimpl();

6:@qualifier 當介面存在兩個實現類的時候必須使用@qualifier指定注入哪個實現類,否則可以省略,只寫@autowired。

例如:定義乙個交通工具類:vehicle。此時有兩個子類bus和sedan。如果用@autowired來找vehicle的話,會有兩個匹配的選項bus和sedan。為了限定選項,可以如下

7:形似@service("***"):相當於講這個類定義為乙個bean,bean名稱為***,預設為首字母小寫

比如在乙個student實現類上加上@service("student"),括號裡面就是給例項化後的student物件取個名字。這是在你乙個介面有多個實現類的情況下區分實現類的方式。

比如student實現了person介面,在你的controller裡面@autowired person時,假如這時person還有另乙個實現類user,為了確定例項化student還是user, @service括號裡面的東西就有用了,

8:@resource

@resource的作用相當於@autowired,只不過@autowired按bytype自動注入,而@resource預設按 byname自動注入罷了。@resource有兩個屬性是比較重要的,分是name和type,spring將@resource註解的name屬性解析為bean的名字,而type屬性則解析為bean的型別。所以如果使用name屬性,則使用byname的自動注入策略,而使用type屬性時則使用bytype自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byname自動注入策略。

@resource裝配順序

1).如果同時指定了name和type,則從spring上下文中找到唯一匹配的bean進行裝配,找不到則丟擲異常

2) 如果指定了name,則從上下文中查詢名稱(id)匹配的bean進行裝配,找不到則丟擲異常

3) 如果指定了type,則從上下文中找到型別匹配的唯一bean進行裝配,找不到或者找到多個,都會丟擲異常

4) 如果既沒有指定name,又沒有指定type,則自動按照byname方式進行裝配;如果沒有匹配,則回退為乙個原始型別進行匹配,如果匹配則自動裝配;

9:@postconstruct,@predestroy

這兩個注釋只能應用於方法上,標註了@postconstruct 注釋的方法將在類例項化後呼叫,而標註了 @predestroy 的方法將在類銷毀之前呼叫。

Spring 註解積累

知識點 restcontroller註解相當於 responsebody controller合在一起的作用。1 如果只是使用 restcontroller註解controller,則controller中的方法無法返回jsp頁面,或者html,配置的視 析器 internalresourcevie...

spring註解積累

1 restcontroller restcontroller註解,相當於 controller responsebody兩個註解的結合,類中的所有方法都自動加上 responsebody註解,因此不能返回jsp,html頁面,視 析器無法解析jsp,html頁面。如果要返回到jsp,html頁面,...

spring 註解積累

開發十年,就只剩下這套架構體系了!用註解來向spring容器註冊bean。1 repository 標註在持久層,即dao,用於標註資料訪問。2 service 標註在業務層,即service,用於標註業務邏輯。3 controller 標註在控制層。4 component 當不明確這個類屬於那個層...