Spring IOC 11 生命週期

2021-10-02 16:17:46 字數 2226 閱讀 2570

"person1"

name

="person"

class

="com.nanborone.bean.person"

lazy-init

="true"

/>

default-lazy-init

="true"

/>

在建立物件的時候,我們可以根據需要呼叫初始化和銷毀的方法。在bean的scope屬性值prototype的情況下,不會執行銷毀的方法。使用工廠模式依然可以指定bean的初始化和銷毀方法,但是在factorybean建立的情況下不可用。

"person"

class

="com.nanborone.bean.person"

init-method

="init"

destroy-method

="destroy"

/>

在實體類中新增初始化和銷毀的方法:

public

void

init()

public

void

destroy()

public

class

ioctest

}

可以通過beans定義模式匹配當前所有bean的初始化/銷毀方法

default-destroy-method

="dest"

default-init-method

="init"

>

可以在編寫類的時候直接為類實現初始化/銷毀方法

public

class

person

implements

initializingbean

, disposablebean

@override

public

void

destroy()

throws exception

}

可以使用註解@postconstruct@predestroy來定義初始化/銷毀方法

@postconstruct

public

void

postconstruct()

@predestroy

public

void

predestory()

如果這幾種生命週期函式都配置的話它的執行順序應該是

初始化:建構函式 >> @postconstruct >> initializingbean >> init-method

銷毀:predestory >> disposablebean >> destroy-method

spring中包含乙個beanpostprocessor的介面,可以在當前容器bean的初始化方法的前後呼叫該方法,如果配置了初始化方法的前置和後置處理器,無論是否包含初始化方法,都會進行呼叫,但是無法處理通過factorybean建立的bean。如果有多個beanpostprocessor實現,則需要通過實現ordered介面,來定義order屬性來指定順序。

"mybeanpostprocessor"

class

="com.nanborone.bean.beanpostprocessor.mybeanpostprocessor"

/>

建立mybeanpostprocessor 類:

public

class

mybeanpostprocessor

implements

beanpostprocessor

// 在初始化方法呼叫完成後執行

@nullable

@override

public object postprocessafterinitialization

(object bean, string beanname)

throws bean***ception

}

1 生命週期

not running 非執行狀態 not running inactive active background suspended inactive 前台非活動狀態 active 前台活動狀態 background 後台狀態 suspended 掛起狀態 not running inactive ...

17 生命週期Activity

頁面a,呼叫方法順序 本頁面oncreate onstart onresume 從a跳轉到b,呼叫方法的順序為 從b返回a,呼叫順序 下乙個頁面onpause 上乙個頁面onrestart onstart onresume 下乙個頁面onstop ondestroy 豎屏與橫屏的切換 都是原螢幕的頁...

Spring學習06生命週期

目標方法執行前後執行後,將進行初始化或銷毀。class init method 初始化方法名稱 destroy method 銷毀的方法名稱 6.1.1目標類public class userserviceimpl implements userservice public void myinit ...