十 Spring中常用註解 分層整理

2022-09-06 18:36:06 字數 2997 閱讀 3526

1、@controller: 標註展示層元件(bean),但是目前該功能與 @component 相同,用來建立處理http請求的物件

通過 @pathvariable 可以將url中佔位符引數繫結到處理器類的方法形參中@pathvariable(「partnumber「)

備註:參看文章

2)@service:    標註業務層元件(bean),但是目前該功能與 @component 相同

示列:@service("productsearchservice")

@implement(contract = productsearchservice.class)

public class productsearchserviceimpl implements productsearchservice

3)@repository: 標註儲存層元件(bean)

import org.springframework.stereotype.repository;

為了讓 spring 能夠掃瞄類路徑中的類並識別出 @repository 註解,需要在 xml 配置檔案中啟用bean 的自動掃瞄功能,這可以通過實現

@repository 只能標註在 dao 類上呢?這是因為該註解的作用不只是將類識別為bean,同時它還能將所標註的類中丟擲的資料訪問異常封裝為 spring

的資料訪問異常型別。spring本身提供了乙個豐富的並且是與具體的資料訪問技術無關的資料訪問異常結構,用於封裝不同的持久層框架丟擲的異常,使得異

常獨立於底層的框架。

示列:@repository

public class cmmdtyspecialinfobusiness

4)@component 是乙個泛化的概念,僅僅表示乙個元件 (bean) ,可以作用在任何層次   

5)@transactional 通常新增在service層

a.所謂事務是指一組邏輯操作單元即一組sql語句。當這個單元中的一部分操作失敗,整個事務回滾,只有全部正確才完成提交。判斷事務是否配置成功

的關鍵點在於出現異常時事務是否會回滾。

b.如果我們的事務註解@transactional加在dao層,那麼只要與資料庫做增刪改,就要提交一次事務,如此做事務的特性就發揮不出來,尤其是事務的

一致性,當出現併發問題是,使用者從資料庫查到的資料都會有所偏差。一般的時候,我們的service層可以呼叫多個dao層,我們只需要在service層加乙個事務

註解@transactional,這樣我們就可以乙個事務處理多個請求,事務的特性也會充分的發揮出來。

6)@qualifier註解

qualifier的意思是合格者,通過這個標示,表明了哪個實現類才是我們所需要的。當employeeservice介面有兩個serviceimp類service1 和service2時

如果使用@autowired對employeeservice進行注入時,spring會因為不知道該繫結哪個實現類而報錯。需要使用@qualifier進行區分

示列:

@autowired

@qualifier("service1")

employeeservice employeeservice;

7)@autowired和@resource區別:

a. @autowired 是spring提供的注釋,預設按bytype注入。byname需要與@qualifier("物件名")連用

用來裝配bean,可以寫在字段上,或者方法上。預設情況下必須要求依賴物件必須存在,如果要允許null值,可以設定它的required屬性為false,

例如:@autowired(required=false)

b. @resource 是j**a2ee提供的,同時支援bytype和byname注入,預設按byname注入,如果預設情況下找不到就按型別找(name屬性解析為bean的名字,

而type屬性則解析為bean的型別,如果既不指定name也不指定type屬性,這時將通過反射機制使用byname自動注入策略)

推薦使用:@resource註解在字段上,這樣就不用寫setter方法了,並且這個註解是屬於j2ee的,減少了與spring的耦合。這樣**看起就比較優雅。一般常用@autowired

示列:@resource(name = "auditordersubmitserviceimpl")

private ordersubmitserviceauditordersubmitserviceimpl;

@autowired

private ordersubmitbusiness ordersubmitbusiness;

public abstract class commonbusiness

@resource裝配順序:

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

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

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

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

8)@scope 用來配置 spring bean 的作用域,它標識 bean 的作用域。預設值是單例

a.singleton:單例模式,全域性有且僅有乙個例項

b.prototype:原型模式,每次獲取bean的時候會有乙個新的例項

c.request:request表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http request內有效

d.session:session作用域表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http session內有效

e.global session:只在portal應用中有用,給每乙個 global http session 新建乙個bean例項

Spring中常用註解

註解的好處在於大大的減少了人們開發的程式設計量,提高了程式設計效率,那麼下面就接受經常用到的一些註解及其含義等。componentscan 元件掃瞄,可自動發現和裝配一些bean。component可配合commandlinerunner使用,在程式啟動後執行一些基礎任務。restcontrolle...

Spring 中常用的註解

1 用於註冊bean物件的註解 1.1 component 作用 呼叫無參構造建立乙個bean物件,並把物件存入spring的ioc容器,交由spring容器進行管理。相當於在xml中配置乙個bean。屬性 value 指定bean的id。如果不指定value屬性,預設bean的id是當前類的類名。...

Spring中常用的註解

1 configuration 表明這個乙個配置類,主要用於配置bean。例如通過 bean註解往ioc容器中新增bean configuration public class mainconfig public class main 2 componetscan 可以掃瞄指定包下的帶有 compo...