Bean 的生命週期

2021-08-27 14:13:55 字數 3630 閱讀 6861

step1:呼叫無參構造器,建立例項物件。

step2:呼叫引數的setter,為屬性注入值。

step3:若 bean 實現了beannameaware 介面,則會執行介面方法 setbeanname(string beanid),使 bean 類可以獲取其在容器中的 id 名稱。

step4:若 bean 實現了 beanfactoryaware 介面,則執行介面方法 setbeanfactory(beanfactory factory),使 bean 類可以獲取到beanfactory 物件。

step5 : 若 定 義 並 注 冊 了 bean 後 處 理 器 beanpostprocessor , 則 執 行 接 口 方 法

postprocessbeforeinitialization()。

step6:若 bean 實現了 initializingbean 介面,則執行介面方法 afterpropertiesset ()。該方法在 bean 的所有屬性的 set 方法執行完畢後執行,是 bean 初始化結束的標誌,即 bean 例項化結束。

step7:若設定了 init-method 方法,則執行。

step8 : 若 定 義 並 注 冊 了 bean 後 處 理 器 beanpostprocessor , 則 執 行 接 口 方 法

postprocessafterinitialization()。

step9:執行業務方法。

step10:若bean 實現了 disposablebean 介面,則執行介面方法 destroy()。

step11:若設定了 destroy-method 方法,則執行。

介面:

package com.bjpowernode.ba07;

public

inte***ce isomeservice

介面實現類:

package com.bjpowernode.ba07;

import org.springframework.beans.bean***ception;

import org.springframework.beans.factory.beanfactory;

import org.springframework.beans.factory.beanfactoryaware;

import org.springframework.beans.factory.beannameaware;

import org.springframework.beans.factory.disposablebean;

import org.springframework.beans.factory.initializingbean;

public

class

someserviceimpl

implements

isomeservice, beannameaware, beanfactoryaware, initializingbean, disposablebean

public

void

setbdao(string bdao)

public

someserviceimpl()

@override

public

void

dosome()

public

void

setup()

public

void

teardown()

@override

public

void

setbeanname(string name)

@override

public

void

setbeanfactory(beanfactory beanfactory) throws bean***ception

@override

public

void

afterpropertiesset() throws exception

@override

public

void

destroy() throws exception

}

mybeanpostprocessor:

package com.bjpowernode.ba07;

import org.springframework.beans.bean***ception;

import org.springframework.beans.factory.config.beanpostprocessor;

public

class

mybeanpostprocessor

implements

beanpostprocessor

@override

public object postprocessafterinitialization(final object bean, string beanname)

throws bean***ception

}

配置檔案:

<?xml version="1.0" encoding="utf-8"?>

xmlns=""

xmlns:xsi=""

xsi:schemalocation="

/spring-beans.xsd">

id="myservice"

class="com.bjpowernode.ba07.someserviceimpl"

init-method="setup"

destroy-method="teardown">

name="adao"

value="aaa"/>

name="bdao"

value="bbb"/>

bean>

class="com.bjpowernode.ba07.mybeanpostprocessor"/>

beans>

測試類:

package com.bjpowernode.ba07;

import org.junit.test;

public

class

mytest

}測試的結果:

.core

.env

.standardenvironment).

log4j:warn please initialize the log4j system properly.

step1:執行無參構造器

step2:執行setter

step2:執行setter

step3:獲取到bean的id = myservice

step4:獲取到beanfactory容器

step5:執行 ----before---()方法

step6:bean初始化完畢了

step7:初始化完畢之後

step8:執行 ----after---()方法

step9:執行dosome()方法

step10:實現介面的銷毀之前

step11:銷毀之

Bean生命週期

初始化 1 實現org.springframework.beans.factory.initializingbean介面,覆蓋afterpropertiesset方法。public class exampleinitializingbean implements initializingbean 2...

bean生命週期

spring中的ioc容器可以管理bean生命週期,預設情況下,ioc容器初始化時便會把bean例項化。通過以下例項過程來體會bean的生命週期 1.student類 package text public class student public student public void setna...

Bean生命週期?

前言 生命週期 從物件的建立,到物件銷毀的過程。一 bean的生命週期 7步操作 1.建立。通過無參構造方法,建立bean的例項 2.設定物件屬性,和對其他bean的引用。3.檢查有沒有bean的後置處理器,有就把bean的例項傳給postprocessbeforeinitialization 方法...