2013-03-07 74 views
0

只是好奇。春天 - 爲什麼初始化調用setter方法後調用

  1. 爲什麼bean初始化是在setter方法之後完成的?我認爲初始化最好在setter方法完成之前完成 - 就像在進行驗證以確保將值設置爲實例成員之前一樣好

  2. 爲什麼beanPostProcessor在具有beforeInitialization方法後會考慮初始化?

回答

1
  1. 從我的理解,制定者等的電話被認爲是動作設置bean的初始狀態。沒有bean集的初始狀態,你不能做任何有意義的初始化。試想一下,如果在setter之前完成初始化會發生什麼:(假設我們使用setter注入,而不是ctor注入)通過調用默認ctor創建bean,然後調用初始化,然後初始化什麼?這個bean只是一個沒有正確注入依賴關係的空白對象。如果你可以在這種情況下進行初始化,那麼這種初始化可以簡單地放在你的ctor中。

  2. 對於BeanPostProcessor,我相信「後」不是指後初始化。在創建bean(即創建後)後,您只需要進行後處理即可。由於通常在兩個不同的時間進行這種後期處理,這是在bean初始化之前和之後。因此,這兩種方法。

0
  1. 所以初始化可以使用這個bean設置的值。
  2. 因爲這是一個處理器。
+0

那麼爲什麼在postProcessor中有一個名爲beforeInitialization的方法? beforeInitialization這個詞意味着在初始化之前,如果你在它上面添加一個跟蹤,這個方法在bean初始化方法 – yapkm01 2013-03-07 02:21:31

+0

@ yapkm01之前被執行了我認爲你不清楚後處理器適合bean生命週期的位置,但阿德里安的回答應該有助於明確這一點。 – 2013-03-07 02:50:15

相關問題