Spring註解驅動開發 01

2021-09-26 23:45:12 字數 3473 閱讀 4482

匯入依賴:spring-context、spring-aop、spring-bean、spring-core、commons-logging、spring-expression

註解式開發

配置類 config == 等同於配置檔案

@configuration 告訴spring這是乙個配置類

@bean 給容器註冊乙個bean,型別為返回值型別,id預設是用方法名作為id

scope最常用的範圍:

prototype:多例項。ioc容器啟動不會呼叫方法建立物件放在容器中,

每次獲取的時候會呼叫方法建立物件,每次呼叫每次建立

singleton:單例項(預設)。ioc容器啟動會呼叫方法建立物件放到ioc容器中

,以後每次獲取都是直接從容器(map.get())中拿

request:同乙個請求建立乙個例項(web)

session:同乙個session建立乙個例項(web)

懶載入(針對單例項bean):

單例項bean,預設在容器啟動的時候建立物件

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

@bean("bill")

public student student02()

/**

* 這是乙個註解類

* 註解類 == 配置檔案beans.xml

* * @componentscan value:是指定要掃瞄的包

* excludefilters = filter :指定掃瞄的時候按照掃瞄規則排除哪些元件

* * filtertype.annotation 按照註解型別掃瞄(最常用的方式)

* filtertype.assignable_type 按照給定規則掃瞄

* filtertype.aspectj 按照aspectj的表示式掃瞄

* filtertype.regex 按照正規表示式進行掃瞄

* filtertype.custom 按照自定義方式進行掃瞄

* ** includefilters = filter :指定掃瞄的時候需要包含哪些元件

* 使用包含元件時需要加上usedefaultfilters = false

* * 在@componentscans中可以加入多個@componentscan

* */

@configuration

@componentscans(

@componentscan(value = "com.liuxu",includefilters = )*/

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

},usedefaultfilters = false)

) /**

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

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

* 如果系統是linux,給容器中註冊("linus")

** */

@conditional()

總結:給容器中註冊元件:

1.包掃瞄+元件標註註解(@controller、@service、@repository、@component)

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

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

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

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

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

beandefinitionregistry:beandefinition註冊類 :把所有需要新增到容器的bean,呼叫beandefinitionregistry.registerbeandefinition手工註冊進來

註冊乙個bean,指定bean名;指定bean定義資訊,bean的型別等

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

建立乙個spring定義的factorybean。單例項會在容器中儲存乙份,多例項每次都會建立乙個新的bean

工廠bean獲取的是呼叫getobject建立的物件。

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

2)要獲取弓藏bean本身,我們需要給id前面加乙個& --> &colo***ctorybean

/**

* bean宣告週期:

* bean建立 -- 初始化 -- 銷毀過程

* 容器管理bean的生命週期

* 我們可以自定義初始化和銷毀方法,容器在bean進行到當前宣告週期的時候拉力呼叫我們自定義的初始化和銷毀方法

* * 構造(物件建立):

* 單例項:在容器啟動的時候建立物件

* 多例項:在每次獲取的時候建立物件

* 初始化:

* 物件建立完成,並賦值好,呼叫初始化方法

* 銷毀:

* 單例項:在容器關閉的時候進行銷毀

* 多例項:容器不會管理這個bean,所以容器不會呼叫銷毀方法

* ** * 1)指定初始化和銷毀方法 -- car

* 在beans檔案中指定init-method 和 destroy-method方法

* 通過@bean指定initmethod和destroymethod

* * 2)通過讓bean實現initializingbean(定義初始化邏輯),disposablebean(定義銷毀容器)--cat

* 3)可以使用jsr250: --dog

* @postconstruct:在bean建立完成並且屬性賦值完成,來執行初始化

* @predestroy:在容器銷毀之前通知我們進行清理工作

* 4)beanpostprocessor[inte***ce]:bean的後置處理器 -- mybeanpostprocessor

* 在bean初始化前後進行一些處理工作

* postprocessbeforeinitialization:在初始化之前工作

* postprocessafterinitialization:在初始化之後工作

* 遍歷得到容器中所有的beanpostprocessor,挨個執行beforeinitialization,一旦返回null,

* 就跳出for迴圈,不會執行後面的beanpostprocessor。

* ** */

spring 註解驅動 01

註解有 controller 標註是乙個控制層 service 標註是乙個業務層 repository 標註是乙個持久層 configuration 表示是乙個配置類 componentscan 表示掃瞄包與spring bean.xml檔案中的掃瞄包效果一致 下面看是示例 一 這是乙個配置類 pa...

Spring註解驅動開發 容器day01

1.回顧舊的方式 xml去開發 此處省略pom.xml檔案!person實體類 test類 package com.yikuan.test import org.junit.after import org.junit.before import org.junit.test import impo...

spring 註解開發01

宣告這是乙個註解類,替換原來的xml檔案掃瞄指定包及其子包的component元件 conponent,controller,service,repository includefilters 包含過濾的資訊 excludefilters 排除過濾的資訊 過濾的型別 assignable 包含 排除...