Spring元件掃瞄詳解

2022-04-15 09:58:36 字數 1694 閱讀 6366

最近使用spring,發現有很多依賴注入的內容,特別是dao,百思不得其解,後來才知道是spring的依賴注入。spring可以批量將乙個目錄下所有的植入@repository 註解或者@service 註解的元件類一次性掃瞄出來。

<?

xml version="1.0" encoding="utf-8"

?>

<

beans

xmlns

=""xmlns:xsi

=""xmlns:context

=""xsi:schemalocation

="/spring-beans-2.5.xsd

/spring-context-2.5.xsd"

>

<

context:annotation-config

/>

<

context:component-scan

base-package

=」com.eric.spring」>

>

簡單解釋一下:

1、annotation-config是對標記了 spring's @required、@autowired、jsr250's @postconstruct、@predestroy、@resource、jax-ws's @webserviceref、ejb3's @ejb、jpa's @persistencecontext、@persistenceunit等註解的類進行對應的操作使註解生效。

2、base-package為需要掃瞄的包(含所有子包),負責掃瞄那些類有註解。

下面是引用spring framework開發手冊中的一段話:

spring 2.5引入了更多典型化註解(stereotype annotations):@component、@service和@controller。

@component: 所有受spring管理元件的通用形式;而@repository、@service和 @controller則是@component的細化,用來表示更具體的用例(例如,分別對應了持久化層、服務層和表現層)。也就是說,你能用@component來註解你的元件類,但如果用@repository、@service 或@controller來註解它們,你的類也許能更好地被工具處理,或與切面進行關聯。例如,這些典型化註解可以成為理想的切入點目標。當然,在spring framework以後的版本中, @repository、@service和 @controller也許還能攜帶更多語義。如此一來,如果你正在考慮服務層中是該用@component還是@service,那@service顯然是更好的選擇。同樣的,就像前面說的那樣, @repository已經能在持久化層中進行異常轉換時被作為標記使用了。

接下來詳細說明一下@component、@service、@repository和@controller的區別

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

@service 用於標註業務層元件

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

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

在需要元件的地方,使用如下**即可引用

@resource

private elevendao elevendao; //

elevendao類是需要引用的元件

Spring元件掃瞄詳解

最近使用spring,發現有很多依賴注入的內容,特別是dao,百思不得其解,後來才知道是spring的依賴注入。spring可以批量將乙個目錄下所有的植入 repository 註解或者 service 註解的元件類一次性掃瞄出來。xml version 1.0 encoding utf 8 bea...

Spring元件掃瞄使用詳解

1.如果不想在xml檔案中配置bean,我們可以給我們的類加上spring元件註解,只需再配置下spring的掃瞄器就可以實現bean的自動載入。2.下面是引用spring framework開發手冊中的一段話 spring 2.5引入了更多典型化註解 stereotype annotations ...

Spring元件掃瞄使用詳解

1.如果不想在xml檔案中配置bean,我們可以給我們的類加上spring元件註解,只需再配置下spring的掃瞄器就可以實現bean的自動載入。2.下面是引用spring framework開發手冊中的一段話 spring 2.5引入了更多典型化註解 stereotype annotations ...