spring容器註冊元件的方式

2021-08-28 13:49:48 字數 4098 閱讀 9123

給容器註冊元件的方式:

1.包掃瞄+元件標註註解(@controller @servuce @repostiory @component) --侷限自己寫的類

1)配置檔案的方式

在com.dingaimin包下的並使用 @controller @servuce @repostiory @component 註解的類會被載入到spring容器中。

也可以在配置檔案中通過 標籤注入,注入方式有set方法注入,構造器注入,如下面的是set方法注入

2)註解方式

首先建立乙個配置類(相當於之前的配置檔案),並使用

@configuration 修飾類 讓spring容器知道該類是個配置類

@componentscan 包掃瞄 可以配置排除和包含邏輯

①excludefilters = filter 指定掃瞄時排除哪些元件

②includefilters = filter 指定掃瞄時包含哪些元件,注意這裡要讓其生效,需要配置 usedefaultfilters = false

@configuration

@componentscan(value = "com.dingaimin",includefilters = ),

@componentscan.filter(type = filtertype.assignable_type, classes = bookservice.class),

@componentscan.filter(type = filtertype.custom, classes = )},usedefaultfilters = false)

public class mainconfig

2.@bean 匯入第三方包裡的元件

/**

* 預設是單例項

* @scope

* prototype 多例項 ioc容器啟動並不會去呼叫方法建立物件放到容器中,每次獲取的時候才會呼叫方法建立物件

* singleton 單例項(預設) ioc容器啟動會呼叫方法建立物件放到ioc容器中,後面的獲取,直接從容器中拿

** 懶載入 單例項bean,容器啟動不建立物件,第一次使用(獲取)bean建立物件,並初始化

** @conditional 按照一定的條件進行判斷,滿足條件給容器中註冊bean

** @return

*/@scope("prototype")

@lazy

@bean("person")

public person person()

/** * @conditional 按照一定的條件進行判斷,滿足條件給容器中註冊bean

** 如果是windows系統,給容器中註冊bill

* 如果是linux系統,給容器中註冊gates**/

@conditional()

@bean("bill")

public person person01()

@conditional()

@bean("linux")

public person person02()

public class linuxconditon implements condition

return false;

}}public class windowsconditon implements condition

return false;

}}

3.@import 快速給容器匯入乙個元件

1)@import(要匯入到容器中的元件),容器會自動註冊該元件,id預設是全類名

2)importselector 返回需要匯入的元件的全類名陣列

3)importbeandefinitonregistrar 手動註冊bean到容器中

@configuration

@import()

public class mainconfig2 {}

/** *自定義邏輯需要匯入的元件

* */

public class myimportselector implements importselector ;

}}public class myimportbeandefinitionregistrar implements importbeandefinitionregistrar

}}

4.使用spring提供的工廠bean(factorybean)

1) 預設獲取到的是工廠bean 呼叫 getobject建立的物件

2)要想獲取工廠bean本身,需要在id前面加個字首識別符號 &

/**

* spring定義的factorybean

* */

public class colo***ctorybean implements factorybean

@override

public class<?> getobjecttype()

/*** 是單例?

* true 單例,在容器中儲存乙個

* false 多例項,每次獲取都會建立乙個bean

** @return

*/@override

public boolean issingleton()

}public class ioctest

}

輸出結果:

org.springframework.context.annotation.internalconfigurationannotationprocessor

org.springframework.context.annotation.internalautowiredannotationprocessor

org.springframework.context.annotation.internalrequiredannotationprocessor

org.springframework.context.annotation.internalcommonannotationprocessor

org.springframework.context.event.internaleventlistenerprocessor

org.springframework.context.event.internaleventlistene***ctory

mainconfig2

com.dingaimin.bean.color

com.dingaimin.bean.red

com.dingaimin.bean.blue

com.dingaimin.bean.yellow

person

bill

colo***ctorybean

rainbow

colo***ctorybean ... getobject...

colo***ctorybean ... getobject...

bean的型別:class com.dingaimin.bean.color

false

class com.dingaimin.bean.colo***ctorybean

小結:

給容器註冊元件:

1.包掃瞄+元件標註註解(@controller/@service/@repository/@component) --侷限於自己寫的類

2.@bean 匯入第三方包裡的元件

3.@import 快速給容器中匯入乙個元件

1) @import(要匯入到容器中的元件),容器中會自動註冊這個元件,id預設是全類名

2)importselector:返回需要匯入的元件的全類名陣列

3) importbeandefinitionregistrar 手動註冊bean到容器中

4.使用spring提供的 factorybean (工廠bean)

1) 預設獲取到的是工廠bean呼叫getobject建立的物件

2)要獲取工廠bean本身,需要在id前面加個字首標識 &

Spring 1 IOc容器註冊元件方式

ioc容器註冊元件方式 1.包掃瞄 註解形式 component,service,controller,repository 1.componentscan componentscans filter 2.scope lazy 作用域與懶載入 3.conditional class 註冊條件過濾 2...

Spring註解 給容器註冊元件的幾種方式

1.2 方式二 1.1.1 repository service controller component 1.1.2 說明 repository service controller component這四個註解都是標註在元件 類 上,用來把元件註冊到spring容器中。註冊的每個元件,型別是它本...

給容器中註冊元件的方式 筆記

1.包掃瞄 元件標註註解 controller service repository component 這種方式侷限自己寫的類 2.bean 匯入的第三方包裡面的元件 3.import 可以快速給容器中匯入乙個或者多個元件 3.1 import 要匯入到容器中的元件 容器中就會自動註冊這個元件,i...