用註解來向Spring容器註冊Bean

2021-07-03 12:09:52 字數 1547 閱讀 2454

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

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

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

3:@controller標註在控制層。

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

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

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

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

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

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

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

比如student實現了person介面,在你的controller裡面@autowiredperson時,假如這時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容器註解

spring 常用的註解有以下幾種 1 注入userservice 2 resource name userservice 3 private userservice userservice 注意 在action宣告的 userservice 變數的型別必須是 userserviceimpl 或者是...

spring 使用註解註冊bean

使用spring容器帶的 component 就能自動註冊了 不過也要在配置檔案中開啟註解,不然註解不生效 xml xmlns xmlns xsi xmlns context xsi schemalocation context component scan base package com.sun...

Spring註解 給容器註冊元件的幾種方式

1.2 方式二 1.1.1 repository service controller component 1.1.2 說明 repository service controller component這四個註解都是標註在元件 類 上,用來把元件註冊到spring容器中。註冊的每個元件,型別是它本...