Spring 註解說明

2021-08-31 15:26:18 字數 1697 閱讀 4287

@component

@repository

@service 

@controller

目前這些沒有啥太大的區別 都是在實現類上進行標註 說明這是乙個元件。

從名字上可以看出:

@service用於標註業務層元件,

@controller用於標註控制層元件(如struts中的action),

@repository用於標註資料訪問元件,即dao元件,

@component泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。

@autowired 可以對成員變數、方法和建構函式進行標註,來完成自動裝配的工作。@autowired的標註位置不同,它們都會在spring 在初始化usermanagerimpl這個bean時,自動裝配userdao這個屬性,區別是:第一種實現中,spring會直接將userdao型別的唯一乙個bean賦值給userdao這個成員變數;第二種實現中,spring會呼叫setuserdao方法來將userdao型別的唯一乙個 bean裝配到userdao這個屬性。 

@resource(jsr-250標準註解,推薦使用它來代替spring專有的@autowired註解) 

spring 不但支援自己定義的@autowired註解,還支援幾個由jsr-250規範定義的註解,它們分別是@resource、@postconstruct以及@predestroy。 

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

@resource裝配順序

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

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

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

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

的base-package屬性指定了需要掃瞄的類包,類包及其遞迴子包中所有的類都會被處理。 

還允許定義過濾器將基包下的某些類納入或排除。spring支援以下4種型別的過濾方式:

使用@scope來定義bean的作用範圍 

在使用xml定義bean時,我們可能還需要通過bean的scope屬性來定義乙個bean的作用範圍,我們同樣可以通過@scope註解來完成這項工作:

@scope

("session"

)   

@component

()   

public

class

usersessionbean 

implements

serializable   

Spring註解說明

scope singleton 什麼都不傳是singleto是單例項,容器啟動的時候建立物件,放到ioc中,用到的時候到ioc中獲取,如果傳prototype表示是多例項,容器啟動的時候不建立物件,在呼叫的時候建立容器到ioc中。且呼叫一次建立一次。bean public student stude...

spring的註解說明

controller 控制器 注入服務 service 服務 注入dao repository dao 實現dao訪問 component 把普通pojo例項化到spring容器中,相當於配置檔案中的 component,service,controller,repository註解的類,並把這些類...

Spring常見的註解說明

component service conctrl用於注入乙個類 autowired用於注入成員變數 方法 建構函式,它是通過byname方式經過依賴注入 transactional用於事務控制的注入 採用spring註解的時候要啟用spring的註解並要重寫sessionfactory 註解配置檔...