1. 程式人生 > >簡單比較init-method,afterPropertiesSet和BeanPostProcessor

簡單比較init-method,afterPropertiesSet和BeanPostProcessor

一、簡單介紹

1、init-method方法,初始化bean的時候執行,可以針對某個具體的bean進行配置。init-method需要在applicationContext.xml配置文件中bean的定義裡頭寫明。例如:

這樣,當TestBean在初始化的時候會執行TestBean中定義的init方法。

2、afterPropertiesSet方法,初始化bean的時候執行,可以針對某個具體的bean進行配置。afterPropertiesSet 必須實現 InitializingBean介面。實現 InitializingBean介面必須實現afterPropertiesSet方法。

3、BeanPostProcessor,針對所有Spring上下文中所有的bean,可以在配置文件applicationContext.xml中配置一個BeanPostProcessor,然後對所有的bean進行一個初始化之前和之後的代理。BeanPostProcessor介面中有兩個方法: postProcessBeforeInitialization和postProcessAfterInitialization。 postProcessBeforeInitialization方法在bean初始化之前執行, postProcessAfterInitialization方法在bean初始化之後執行。

總之,afterPropertiesSet 和init-method之間的執行順序是afterPropertiesSet 先執行,init-method 後執行。從BeanPostProcessor的作用,可以看出最先執行的是postProcessBeforeInitialization,然後是afterPropertiesSet,然後是init-method,然後是postProcessAfterInitialization。

二、相關用法及程式碼測試

該PostProcessor類要作為bean定義到applicationContext.xml中,如下

2、TestBean類,用做測試Bean,觀察該Bean初始化過程中上面4個方法執行的先後順序和內容。實現InitializingBean介面,並且實現介面中的afterPropertiesSet方法。最後定義作為init-method的init方法。

結果如下:

------------------------------

物件TestBean開始例項化

******************************

afterPropertiesSet is called

******************************

init-method is called

******************************

物件TestBean例項化完成

------------------------------

3、比較BeanFactoryPostProcessor和BeanPostProcessor BeanFactoryPostProcessor在bean例項化之前執行,之後例項化bean(呼叫建構函式,並呼叫set方法注入屬性值

),然後在呼叫兩個初始化方法前後,執行了BeanPostProcessor。初始化方法的執行順序是,先執行afterPropertiesSet,再執行init-method。

作者:小程故事多 連結:http://www.jianshu.com/p/890446a3d477 來源:簡書 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

相關推薦

簡單比較init-methodafterPropertiesSetBeanPostProcessor

一、簡單介紹 1、init-method方法,初始化bean的時候執行,可以針對某個具體的bean進行配置。init-method需要在applicationContext.xml配置文件中bean的定義裡頭寫明。例如:這樣,當TestBean在初始化的時候會執行TestBean中定義的init方法。2、af

Kafka的簡單介紹與使用生產者消費者的JavaApi

一、簡介 2、實時流資料管道,可以在 3、構建流式引用 4、是一個分散式流式處理平臺, 統稱訊息佇列或訊息中介軟體,有生產者和消費者之分 消費者去kafka中拉資料(而不是kafka給資料) 其實kafka就是一個臨時儲存的外掛,但是這個外掛效能很強大 kafka 是用scala編譯的 0.

【GDAL學習】過濾器簡單的空間分析函式模組

1.屬性過濾器 >>>import ogr,os >>>os.chdir('E:/data/GDAL/ospy_data3') >>>driver=ogr.GetDriverByName('ESRI Shapefile') >>&

比較Template method、StrategyBuilder模式隨想

Template method和Strategy模式經常在框架設計中被使用,並且二者很相似,都是父類定義功能介面,將具體的實現留個子類,有時二者可以相互替換。 Template method主要是父類將一個功能的實現分成幾個小的步驟,並且在模版方法中規定了這些步驟的執行順序,

spring的InitializingBean的 afterPropertiesSet 方法 init-method配置的區別聯系

def abs stat 說明 method dex pri 方法 nco InitializingBean Spirng的InitializingBean為bean提供了定義初始化方法的方式。InitializingBean是一個接口,它僅僅包含一個方法:aft

Spring中構造器、init-method、@PostConstruct、afterPropertiesSet孰先孰後自動註入發生時間以及單例多例的區別

但是 lan 構造方法 nes src 調用父類構造方法 pos print 提醒      首先明白,spring的IOC功能需要是利用反射原理,反射獲取類的無參構造方法創建對象,如果一個類沒有無參的構造方法spring是不會創建對象的。在這裏需要提醒一下,如果我們在c

spring的InitializingBean的 afterPropertiesSet 方法 init-method配置的 區別聯絡

//……//在一個bean的合作者裝置完成後,執行一個bean的初始化方法。protectedvoid invokeInitMethods(String beanName, Object bean, RootBeanDefinition mergedBeanDefinition) throws Throwab

mysqlOracle的簡單比較

空值 localhost pda varchar2 自連接 smi ins 修改字段 條件 ORA-27101: shared memory realm does not exist解決方法: 1、用CMD進入命令行2、sqlplus /nolog3、conn / as s

產品經理如何與強勢的技術溝通? 技術比較有資歷會以技術無法實現等方面的原因拒絕處理產品提出的需求。 你們是否遇到這樣的技術? 產品懂技術的話是不是會好一些因為可以技術說“行話”了並且產品懂技術就不會被忽悠了。

intern 世界 自己人 做好自己 最重要的 叠代開發 對比 不一定 制造 PM在YY...作為強勢的技術來回答一下吧。說明白WHY,HOW,WHAT就好了。 我想點兩個贊,u can u up,no can no bb 什麽的。 微軟的win8之父年輕時候也是一個PM應

(轉)Spring 的 init-method destory-method

instance valid utf-8 rsh sage imp jdb 中修改 實現類 背景:今天在項目中看到spring中bean在初始化和註銷時候的方法定義,之前沒有用過這種方式,在此記錄下,方便後期查看! 關於在spring 容器初始化 bean 和銷毀前

python 捕捉錯誤exceptiontracebacksys.exc_info()比較

提示 for try 包括 traceback code hello form 打印 import traceback,sys import requests try : requests.get(‘dsdsd‘) ##故意讓他出錯 except Except

習題4 編寫一個方法method()判斷一個數能否同時被35整除

true ati rgs 同時 [] 返回 運算符 pri void 編寫一個方法method(),判斷一個數能否同時被3和5整除 首先編寫一個方法method(),由於是判斷,所以返回的數據類型應是波爾型,並且向主方法傳一個整數類型的參數X public class Z

angular4.0angularJS、react.js、vue.js的簡單比較

width 文檔 個人 過程 處理 特性 很好 單頁應用 兼容 angularJS特性 模板功能強大豐富(數據綁定大大減少了代碼量) 比較完善的前端MVC框架(只要學習這個框架,按照規定往裏面填東西就可以完成前端幾乎所有的的問題) 引入了Java的一些概念 angu

集中式(SVN)分布式(Git)版本控制系統的簡單比較

ron table targe 特點 相對 tps ble 12px pan 集中式(SVN) 分布式(Git) 是否有中央服務器 有。開發人員需要從中央服務器獲得最新版本的項目然後在本地開發,開發完推送給中央服務器。因此脫離服

源碼解析:init-method、@PostConstruct、afterPropertiesSet孰先孰後

tro strong proc blog tor after stc ini 解析 http://sexycoding.iteye.com/blog/1046993 @PostConstruct註解後的方法在BeanPostProcessor前置處理器中就被執行了,所以當然

js基本類型常量 比較運算符邏輯運算符

true undefine str efi spa -1 不能 十六進制 變量 js基本類型和常量 Number(數字類型) 1、整型常量(10進制\8進制\16進制) 十六進制以0x或0X開頭,例如:0x8a。 八進制必須以數字0開頭,例如:0123。 十進制的第一位不

關於DHRSA算法的簡單比較

加解密 RSA算法 DH算法 本文簡單地談下關於安全中最為常用的兩個非對稱加密的DH算法及RSA算法,文中無意於涉及一些數學原理,這個在網上已經有很多文章敘述了,再重復也沒有太多意思(這類文章只要關註兩點,**其一是密鑰生成方法,其二就是數據的加解密公式**),此文僅僅是幫助一般用戶能夠明確

?spring中afterPropertiesSet方法與init-method配置描述

.post -m sse vax 註解 ota troy 一次 exc spring中afterPropertiesSet方法與init-method配置描述 1. InitializingBean.afterPropertiesSet()Spring中Initializi

spring中afterPropertiesSet方法與init-method配置描述

daemon sset end msg redis his === all HR ---恢復內容開始--- 今天看了前輩們寫的代碼用到了afterPropertiesSet()的方法,就好好整理了spring的bean加載 1. InitializingBean.after

虛擬混合SD-WAN如何比較對比

寬帶連接 物理 硬件 均衡 策略 設備 網絡工程 技術 架構 不同的WAN技術軟件定義網絡(SDN)在重塑廣域網(WAN)方面發揮了重要作用。因此,其他WAN技術(如虛擬WAN和混合WAN)經常被錯誤地與SD-WAN混為一談。雖然虛擬和混合WAN技術與SD-WAN具有相似的