爲什麼bean初始化是在setter方法之後完成的?我認爲初始化最好在setter方法完成之前完成 - 就像在進行驗證以確保將值設置爲實例成員之前一樣好
爲什麼beanPostProcessor在具有beforeInitialization方法後會考慮初始化?
0
A
回答
1
從我的理解,制定者等的電話被認爲是動作設置bean的初始狀態。沒有bean集的初始狀態,你不能做任何有意義的初始化。試想一下,如果在setter之前完成初始化會發生什麼:(假設我們使用setter注入,而不是ctor注入)通過調用默認ctor創建bean,然後調用初始化,然後初始化什麼?這個bean只是一個沒有正確注入依賴關係的空白對象。如果你可以在這種情況下進行初始化,那麼這種初始化可以簡單地放在你的ctor中。
對於BeanPostProcessor,我相信「後」不是指後初始化。在創建bean(即創建後)後,您只需要進行後處理即可。由於通常在兩個不同的時間進行這種後期處理,這是在bean初始化之前和之後。因此,這兩種方法。
0
- 所以初始化可以使用這個bean設置的值。
- 因爲這是一個後處理器。
相關問題
- 1. 初始化方法調用
- 2. Guice在初始化對象後調用初始化方法
- 3. 如何調用春代理方法一次初始化
- 4. 由Interface Builder初始化UITableViewCell時調用什麼方法?
- 5. 爲什麼在Javascript調用方法比調用的getter/setter方法
- 6. 春天初始化順序
- 7. 添加方法調用setter(序列化)
- 8. 超級初始化後的JavaFx調用超級方法
- 9. 如何自動調用按鈕的方法初始化後?
- 10. 如何在ruby初始化後立即調用方法?
- 11. 初始化調用deleteLater後立即()
- 12. 爲什麼我的UIViewController初始化程序從未調用?
- 13. 爲什麼Swift調用錯誤的初始化器?
- 14. 調用getter和setter方法
- 15. 爲什麼調用了uid-getter/setter(ArrayCollection)?
- 16. 子類init方法只調用基礎初始化方法
- 17. 如何從初始化方法調用類方法?
- 18. 從ruby初始化調用方法時未定義的方法
- 19. 無法用覆蓋初始化方法調用類
- 20. 初始化後無法使用MySqlConnection。爲什麼?
- 21. Ember.Application中ready方法的用法是什麼?在所有視圖初始化之後它會被調用嗎?
- 22. 春天開機H2數據初始化
- 23. 春天 - 對於Bean初始化
- 24. 春天不進行初始化豆
- 25. 爲什麼從基類調用方法調用子方法?
- 26. 如何使用getter/setter方法進行延遲初始化?
- 27. 爲什麼我不能通過setter初始化一個類?
- 28. 無法調用初始化爲通用型
- 29. 爲什麼初始化
- 30. 方法調用後原始局部變量會發生什麼?
那麼爲什麼在postProcessor中有一個名爲beforeInitialization的方法? beforeInitialization這個詞意味着在初始化之前,如果你在它上面添加一個跟蹤,這個方法在bean初始化方法 – yapkm01 2013-03-07 02:21:31
@ yapkm01之前被執行了我認爲你不清楚後處理器適合bean生命週期的位置,但阿德里安的回答應該有助於明確這一點。 – 2013-03-07 02:50:15