給容器註冊元件的方式:
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...