之前面試支付寶的時候面試官問了spring 的ioc容器,以及依賴注入的好處,現在都記得他問道,為什麼非使用依賴注入,我要用到乙個其他物件時,new乙個怎麼就不好了。當時沒答上來真的覺得自己學藝不精,感到丟人。
現在讀了spring原始碼感覺可以回答一二
比new乙個物件好的原因有幾點:
1.在程式中如果不是必須同乙個物件多個例項時,也就是乙個物件只是在某個地方使用一下時new一下,依賴注入就比new乙個物件更好,因為new乙個物件必選面臨頻繁建立和銷毀記憶體例項物件的問題。而ioc管控下例項物件都是單例模式的,就是在程式執行時始終只有乙個物件例項生成不需要頻繁建立和銷毀,也因為在記憶體中只有乙個例項物件,減少記憶體開銷。
2還有乙個更加重要的原因:在沒有spring這個beanfactory之前,我們都是直接通過new來例項化各種物件,現在各種物件bean的生產都是通過beanfactory來例項化的,這樣的話,spring這個beanfactory就可以在例項化bean的過程中,做一些小動作——在例項化bean的各個階段進行一些額外的處理,也就是說beanfactory會在bean的生命週期的各個階段中對bean進行各種管理,並且spring將這些階段通過各種介面暴露給我們,讓我們可以對bean進行各種處理,我們只要讓bean實現對應的介面,那麼spring就會在bean的生命週期呼叫我們實現的介面來處理該bean.
我為什麼選擇使用容器?
編者的話 作者主要介紹了自己選擇使用容器的6個主要原因,這也是容器為我們的工作帶來的一些好處。燒腦式kubernetes實戰訓練營 本次培訓理論結合實踐,主要包括 kubernetes架構和資源排程原理 kubernetes dns與服務發現 基於kubernetes和jenkins的持續部署方案 ...
我為什麼選擇使用容器?
本文講的是我為什麼選擇使用容器?編者的話 作者主要介紹了自己選擇使用容器的6個主要原因,這也是容器為我們的工作帶來的一些好處。燒腦式kubernetes實戰訓練營 本次培訓理論結合實踐,主要包括 kubernetes架構和資源排程原理 kubernetes dns與服務發現 基於kubernetes...
為什麼要使用Docker和容器
1981年出版的一本書名為 給樹上釘指甲 將軟體描述為 模糊且難以牢牢抓住 1981年就是如此,距今已有近40年的歷史。軟體,無論是您購買的應用程式,還是您自己構建的應用程式,仍然難以部署,難以管理且難以執行。docker容器提供了一種掌握軟體的方法。您可以使用docker來包裝應用程式,以解決其部...