通常情況下,在xml bean配置檔案宣告所有的bean類或元件,這樣spring容器可以檢測並註冊bean類或元件。 其實,spring是能夠自動掃瞄,檢測和預定義的專案包並例項化bean,不再有繁瑣的bean類宣告在xml檔案中。
在bean配置檔案中配置「context:component」表親啊,這意味著,在 spring 中啟用自動掃瞄功能。base-package 是指明儲存元件,spring將掃瞄該資料夾,並找出bean(註解為@component)並註冊到 spring 容器:
xmlns
=""xmlns:xsi
=""xmlns:context
=""xsi:schemalocation
="/spring-beans-2.5.xsd
/spring-context-2.5.xsd"
>
<
context:component-scan
base-package
="com.myprj.customer"
/>
beans
>
使用@component注釋來表示該類是乙個自動掃瞄元件。
你可以這樣建立自定義名稱:
@service
("aaa"
)public
class
customerservice..
.
現在,可以用』aaa』這個名稱進行檢索。
customerservice cust =
(customerservice)context.
getbean
("aaa"
);
在spring2.5中,有4種型別的元件自動掃瞄注釋型別
使用spring 「過濾」 掃瞄並註冊匹配定義「regex」,即使該類元件的名稱未標註 @component 也能被註冊到spring容器中:
<
context:component-scan
base-package
="com.myprj"
>
<
context:include-filter
type
="regex"
expression
="com.myprj.customer.dao.*dao.*"
/>
<
context:include-filter
type
="regex"
expression
="com.myprj.customer.services.*service.*"
/>
context:component-scan
>
在這個xml過濾中,所有檔案的名稱中包含 dao 或 service(dao., services.) 單詞將被檢測並在 spring 容器中註冊。
另外,您還可以排除指定元件,以避免 spring 檢測和 spring 容器註冊。
如不包括在這些檔案中標註有 @service :
<
context:component-scan
base-package
="com.myprj.customer"
>
<
context:exclude-filter
type
="annotation"
expression
="org.springframework.stereotype.service"
/>
context:component-scan
>
Spring自動掃瞄元件
通常情況下,宣告所有的bean類或元件的xml bean配置檔案,這樣spring容器可以檢測並註冊bean類或元件。其實,spring是能夠自動掃瞄,檢測和預定義的專案包並例項化bean,不再有繁瑣的bean類宣告在xml檔案中。下面是乙個簡單的spring專案,包括客戶服務和dao層。讓我們來 ...
Spring 自動掃瞄元件
前面 spring 文章都是使用 xml bean 配置檔案實現 spring 容器檢測並註冊bean類或元件。其實,spring是能夠自動掃瞄,檢測和預定義的專案包並例項化bean,不再有繁瑣的bean類宣告在xml檔案中。現在,啟用spring元件掃瞄功能。使用 component注釋來表示這是...
spring 元件掃瞄
有的時候我們的xml中有過多的配置,很繁瑣,為了簡化配置我們使用context中的元件掃瞄的方式,將一部分類直接交付給spring管理。xml中的配置如下。xmlns xmlns xsi xmlns context xsi schemalocation spring beans.xsd spring...