Spring 配置自動掃瞄原理說明

2021-08-13 02:19:17 字數 2375 閱讀 9701

spring利用ioc容器將所有的bean進行有秩序的管理維護,而實際專案中不可能在xml檔案中建立bean,而是利用了spring的元件自動掃瞄機制,通過在classpath自動掃瞄的方式把元件納入到spring容器中。這大大減少了程式設計師在配置xml檔案上的時間,使得配置檔案顯得乾淨,整潔,便於維護。

<?xml version="1.0" encoding="utf-8"?>

xmlns=""

xmlns:xsi=""

xmlns:context=""

xmlns:p=""

xsi:schemalocation="

/spring-beans-2.5.xsd

/spring-context-2.5.xsd

">

base-package="com.springtest">

context:component-scan>

beans>

注:節點用於通知spring容器掃瞄元件,base-package屬性用於指定將要被掃瞄的元件所在的包名稱。

在這裡說明一下:context:component-scan有乙個use-default-filters屬性,預設為true,這就意味著會掃瞄指定包base-package下的全部的標有@component@service,@repository的類,並註冊成bean.

1. context:include-filter 指定掃瞄位置

2. context:exclude-filter 指定的不掃瞄

use-default-filters=」true」時,此時指定的include-filter不會起到作用,只有當

use-default-filters=」false」時,context:exclude-filter指定的不掃瞄,context:include-filter指定的掃瞄

第二步:為需要被掃瞄的類新增相應的註解;註解的型別有以下幾種:

第三步:當為類新增完成註解後,我們需要測試相應的元件是否被納入spring容器,所以我們需要測試元件是否被掃瞄;如下:

@test

public

void

testadduser()

在這種情況下,spring會將被標註註解的類名拿到,然後再將該類名的第乙個字母變為小寫,放到getbean()方法中。如:userbizimpl類的元件id就會是userbizimpl,獲取時為context.getbean(「userbizimpl」);

那麼,我們在使用註解時可以自定義元件的id嗎?

當然可以。

我們需要在為相應的類新增註解時,在註解之後新增自定義的類名,例如:

@service("userbiz")

public

class

userbizimpl

implements

userbiz

當我們在獲取該元件時,為context.getbean(「userbiz);

2.在配置檔案中我們可以對元件(bean)的作用域範圍進行設定,它的預設值是單例模式,那麼在新增註解的情況下,我們怎樣設定元件的作用域範圍呢?

我們可以直接在為類新增註解的同時,運用另乙個註解@scope(「prototype」)來設定,如下

@service(「userbiz」)@scope(「prototype」)

public class userbizimpl implements userbiz

3.在使用註解時,為元件設定初始化和銷毀方法:

在新增註解的相應的類中,如果想初始化或銷毀某個方法,我們可以直接在方法上新增註解,如下:

@postconstruct

public

void

additem()

@predestroy

public

void

testitem()

4.在使用spring自動掃瞄元件後,怎樣進行依賴注入?

運用註解@resource和@autowired,並為依賴物件設定名稱,例如:

@resource(name="userdao")

private userdao userdao = null;

首先它會根據名稱去找spring自動掃瞄的並加入到spring容器的元件(bean),如果有相同的名稱,則進行依賴注入,如果沒有相同的名稱。則會根據型別區尋找元件。

引自:

Spring 配置自動掃瞄原理說明

spring利用ioc容器將所有的bean進行有秩序的管理維護,而實際專案中不可能在xml檔案中建立bean,而是利用了spring的元件自動掃瞄機制,通過在classpath自動掃瞄的方式把元件納入到spring容器中。這大大減少了程式設計師在配置xml檔案上的時間,使得配置檔案顯得乾淨,整潔,便...

Spring自動掃瞄元件

通常情況下,宣告所有的bean類或元件的xml bean配置檔案,這樣spring容器可以檢測並註冊bean類或元件。其實,spring是能夠自動掃瞄,檢測和預定義的專案包並例項化bean,不再有繁瑣的bean類宣告在xml檔案中。下面是乙個簡單的spring專案,包括客戶服務和dao層。讓我們來 ...

Spring 自動掃瞄元件

前面 spring 文章都是使用 xml bean 配置檔案實現 spring 容器檢測並註冊bean類或元件。其實,spring是能夠自動掃瞄,檢測和預定義的專案包並例項化bean,不再有繁瑣的bean類宣告在xml檔案中。現在,啟用spring元件掃瞄功能。使用 component注釋來表示這是...