開發十年,就只剩下這套架構體系了! >>>
用註解來向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 當不明確這個類屬於那個層的時候,可以使用 componen...