@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 註解配置檔...