詳細例項,解讀spring容器中bean的生命週期

2021-07-28 06:54:16 字數 4340 閱讀 2434

下面新增此次測試demo的工程樣例截圖

下面為完整的測試檔案**

1、beanlifecycle

package springioc;

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;

import org.springframework.beans.factory.annotation.autowired;

/* * 通過觀察 person類的例項化過程

* beanlifecycle的例項化過程

* 以及這兩個類之間依賴注入的過程

* 深入了解bean生命週期

*/public class beanlifecycle implements beanfactoryaware,beannameaware,initializingbean,disposablebean

public string getstarttime()

public void setstarttime(string starttime)

public string getendtime()

public void setendtime(string endtime)

public person getperson()

public void setperson(person person)

/** 去掉setperson,驗證是否能成功注入person依賴

*/public void validsetperson()

@override

public void destroy() throws exception

@override

public void afterpropertiesset() throws exception

@override

public void setbeanname(string arg0)

@override

public void setbeanfactory(beanfactory arg0) throws bean***ception

/** 配置檔案中,標籤, 通過 init-method屬性指定的方法

*/public void myinitmethod()

/** 配置檔案中,標籤, 通過 destory-method屬性指定的方法

*/public void mydestory()

}

2、beanlifecycletest

package springioc;

public class beanlifecycletest

}

3、mybeanfacotrypostprocessor

package springioc;

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

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

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

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

/* * 自定義bean工廠後處理器

* */

public class mybeanfacotrypostprocessor implements beanfactorypostprocessor

}

4、mybeanpostprocessor

package springioc;

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

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

/** * 通過實現beanpostprocessor介面方法

* * 最終,在spring容器中註冊該自定義bean後處理器

* 從容器中獲取bean時,觀察該實現方法的呼叫時機,深入理解bean生命週期

* */

public class mybeanpostprocessor implements beanpostprocessor

//對容器中的beanlifecycle例項化前,進行處理

if("beanlifecycle".equals(beanname))

} return bean;

} /*

* 實現介面方法,該實現方法,在例項化bean後進行呼叫

*/@override

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

if("person".equals(beanname))

}return bean;

}}

5、myinstantiationawarepostprocessor

package springioc;

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

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

/* * 通過擴充套件介面卡 instantiationawarebeanpostprocessoradapter

* 重寫其中的某些個方法

* 觀察輸出語句的呼叫時機,理解bean的生命週期

*/public class myinstantiationawarepostprocessor extends instantiationawarebeanpostprocessoradapter

@override

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

return bean;

}}

6、person

package springioc;

import org.springframework.stereotype.service;

/* * 通過service註解,在spring容器中進行註冊,同時,xml檔案中也有對person的配置

* 如果容器啟動沒有報錯,說明spring對此採取了覆蓋功能

*/@service("person")

public class person

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

@override

public string tostring()

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

下面兩個截圖,是測試demo的輸出結果分析圖

詳細解讀mysql 詳細解讀MySQL中的許可權

一 前言 很多文章中會說,資料庫的許可權按最小許可權為原則,這句話本身沒有錯,但是卻是一句空話。因為最小許可權,這個東西太抽象,很多時候你並弄不清楚具體他需要哪些許可權。現在很多mysql用著root賬戶在操作,並不是大家不知道用root許可權太大不安全,而是很多人並不知道該給予什麼樣的許可權既安全...

Spring容器事件小例項

這個例項,真的是非常小的例項 主要實現了時間發布和事件監聽的過程。比如在上學的時候,我們經常要到學校食堂吃飯,但是剛進來的新生不一定了解學校食堂開飯時間,就訂閱了學校食堂的廣播通知 那麼實現 來了。先來定義乙個事件restaurantevent public class restauranteven...

web容器中例項化spring相關配置說明

web容器中例項化spring相關配置說明 要想在web容器例項化時載入spring容器,web.xml檔案中配置如下 contextconfiglocation classpath bean.xml org.springframework.web.context.contextloaderlist...