bean的生命週期(含後置處理器)

2021-10-24 01:57:29 字數 2422 閱讀 2808

我們先講不含後置處理器的:

(1)通過構造器建立bean例項(無引數構造)

(2)為bean的屬性設定值和對其他bean引用(呼叫set方法)

(3)呼叫bean的初始化的方法(需要進行配置初始化的方法)。

(4) bean可以使用了物件獲取到了).

(5)當容器關閉時候,呼叫bean的銷毀的方法(需要進行配置銷毀的方法)

先建立乙個我們要呼叫的bean 然後我會在各個步驟上進行輸出。

package cn.zsp.spring5.bean;

public

class

order

public

void

setpname

(string pname)

public

void

initmethod()

public

void

destroymethod()

}

配置xml檔案,特別注意這裡的初始化還有銷毀方法方法我們要自己設定:

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

xmlns

=""xmlns:xsi

=""xsi:schemalocation

=" /spring-beans.xsd"

>

"order"

class

="cn.zsp.spring5.bean.order"

init-method

="initmethod"

destroy-method

="destroymethod"

>

name

="pname"

value

="zsp"

>

property

>

bean

>

beans

>

第三步使用測試類:沒啥說的,就是記得呼叫銷毀方法

這是演示結果

在前面的基礎上多了創造乙個後置處理器的類:注意要繼承beanpostprocessor 並且重寫兩個方法

(1)通過構造器建立bean例項(無引數構造)

(2)為bean的屬性設定值和對其他bean引用(呼叫set方法)

(3)把bean例項傳遞bean後置處理器的方法

(4)呼叫bean的初始化的方法(需要進行配置初始化的方法)u

(5))把bean例項傳遞bean後置處理器的方法

(6) bean可以使用了(物件獲取到了)u

(7)當容器關閉時候,呼叫bean的銷毀的方法(需要進行配置銷毀的方法)以

package cn.zsp.spring5.bean;

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

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

import org.springframework.lang.nullable;

public

class

mybeanpost

implements

beanpostprocessor

@override

public object postprocessafterinitialization

(object bean, string beanname)

throws bean***ception

}

然後修改一下配置檔案:

package cn.zsp.spring5.bean;

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

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

import org.springframework.lang.nullable;

public class mybeanpost implements beanpostprocessor

@override

public object postprocessafterinitialization(object bean, string beanname) throws bean***ception

}

Bean的生命週期

一般來說,prototype作用域的bean,spring僅僅負責建立,當建立了bean例項之後,該例項將完全交給客戶端 去管理,spring容器不再跟蹤其生命週期。而對於singleton作用域的bean,每次客戶端 請求時都會共享同乙個bean例項,因此singleton作用域的bean的生命週...

Bean的生命週期

所有的bean都可以宣告自定義初始化方法和銷毀方法 init method 初始化就會呼叫的方法 destroy method 撤銷呼叫的方法 public void start public void stop 上面的方法只能需要在bean中宣告init method和destroy method...

Bean 的生命週期

step1 呼叫無參構造器,建立例項物件。step2 呼叫引數的setter,為屬性注入值。step3 若 bean 實現了beannameaware 介面,則會執行介面方法 setbeanname string beanid 使 bean 類可以獲取其在容器中的 id 名稱。step4 若 bea...