Spring的元件自動掃瞄機制

2021-06-27 02:51:29 字數 2150 閱讀 3751

2009-12-28 10:33:16

|  分類:

spring|舉報

|字型大小訂閱

spring將所有的bean都納入到ioc中建立、管理和維護。對於大型的專案而言,專案中會有成百上千個bean,如果我們都在配置檔案中配置,那麼我們就會增加配置檔案的體積,顯得過於臃腫,過於龐大,查詢維護起來也不太方便。

在spring2.5中引入了元件自動掃瞄機制,通過在classpath自動掃瞄的方式把元件納入到spring容器中。這大大減少了程式設計師在配置xml檔案上的時間,使得配置檔案顯得乾淨,整潔,便於維護。

這種機制的工作步驟是:

1.配置需要掃瞄的類;

2.在需要被納入spring容器的類上加上相應的註解;

3.spring在類路徑下尋找標註了註解的類,並把這些類納入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

">

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

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

· @service 用於標註業務層元件;

· @repository 用於標註資料訪問層元件;

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

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

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

@test

public void testadduser()

如果輸出不為空,則說明測試類已經被掃瞄並且納入了spring容器。

細節問題總結:

在這種情況下,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將所有的bean都納入到ioc中建立 管理和維護。對於大型的專案而言,專案中會有成百上千個bean,如果我們都在配置檔案中配置,那麼我們就會增加配置檔案的體積,顯得過於臃腫,過於龐大,查詢維護起來也不太方便。在spring2.5中引入了元件自動掃瞄機制,通過在classpath自動掃瞄的...

Spring的元件自動掃瞄機制

spring將所有的bean都納入到ioc中建立 管理和維護。對於大型的專案而言,專案中會有成百上千個bean,如果我們都在配置檔案中配置,那麼我們就會增加配置檔案的體積,顯得過於臃腫,過於龐大,查詢維護起來也不太方便。在spring2.5中引入了元件自動掃瞄機制,通過在classpath自動掃瞄的...

Spring的元件自動掃瞄機制

spring將所有的bean都納入到ioc中建立 管理和維護。對於大型的專案而言,專案中會有成百上千個bean,如果我們都在配置檔案中配置,那麼我們就會增加配置檔案的體積,顯得過於臃腫,過於龐大,查詢維護起來也不太方便。在spring2.5中引入了元件自動掃瞄機制,通過在classpath自動掃瞄的...