Re: [請益] Spring boot的依賴注入降低耦合的例子
其實就是在做 instance 的管理
物件導向一個很重要概念就是 多型
所以你可以在 runtime 再決定 instance 到底是什麼
IoC 就是實體是外部送進來 不要自己去 new
DI 只是在提示 要送東西進來的人說 你想要的是什麼東西
例如我們可以用 interface 用 name 用 類型等等
來提示我想要的實體是什麼
就這麼簡單而已
那這有什麼好處呢... 好處很多
以你那個例子
如果 Server1 產生了 dao1
如果 Server2 也想要這個實體的時候 你要怎麼把這個實體送過去給 Server2
你可能要寫成
main{
server1 = Server1()
server2 = Server2(server1.dao1)
}
如果你的實體都是個別產生的時候 你就要想辦法去維護這些關係
但是你會說 Server2 可以自己 new 這種也只是一種實體管理的特例 prototype
但是這樣你會有 2個 實體 就要看裡面的特性來決定是否正確
另外還有個問題是 當你自己 new 的時候 很比較缺乏彈性
例如你是 接手開發 Dao1 的人 你想要去做裡面的 override
比較理想的改法是
你寫一個子類別 Dao11 繼承 Dao1 (例如 Dao1 是第三方的 lib)
但是如果你是寫成 Server1 去 new Dao1
你要怎麼把 Dao11 送進去給 Server1
再來就是統一的容器管理 有一個好處就是 他可以在容器裡面幫我們加工
所以可以加上新的 life cycle 可以送 event 可以做 aop 等等
另外有一點就是 早期的 di 是透過 xml 來設定的
這樣有一個很大的好處是 不用重新編譯
現在雖然都是透過 annotation or java config
但是也都是可以透過 application.yaml 來 override
達到不用重新編譯就可以替換的效果
--
不管annotation還是config都有個問題 就是隱藏實作細
節導致你沒坑到你不知道... 除非你是原作者
做的越多你就離計算機愈來愈遠 冏
20
在這個時代依賴注入最重要的用途,特別是在後端開發是讓Application 在多個不同的 環境下(Development, Production, local, etc) 能夠根據profile 組出能正確執行的Application 多型在這裡當然有他的地位,但是一般來說,大部分不接觸system boundary的service objects 是不太需要多型的,如果是java,那種一個interface 只有一個implementation2
來補一下 "如何驗證效果" 的部份 首先假設情境, A 是你的 Web App B 是那個要被 Spring 注入的東西, 假設在 "外部" "其它人開發的 jar" 裡面 驗證的項目 1. B "改變" 時, A 需要做哪些事?10
很久沒寫Java了 就個人觀念提供簡單思考線索 基本上根據你的內容覺得你對解耦合還沒有很理解 講直白一點 當你import類別就是耦合了17
先講結論: DI(Dependency Injection) 跟 IoC(Inversion of Control) 的原始目的都不是解耦 接著說明一下 DI 跟 IoC: 首先 IoC 的目的是控制權的轉移,如原 PO 文章裡面原本是在 Employee 裡面 new Address,而採用 IoC 之後這樣的行為就轉移到外部來決定25
首Po推文有個連結有解答我的疑惑 感謝bron大 文章有點長 先說說我對依賴注入的理解 Spring boot
爆
[問卦] 你騎/開車的時候 會禮讓過路行人嗎如題 你騎/開車的時候 會禮讓要過路口的行人嗎 包括無紅路燈班馬線 以及要轉彎時直行於班馬線上的行人爆
[情報] Gregg Popovich 你沒聽過的小故事Manu Ginobili: 2013 Ray Allen 投進那個三分球,馬刺錯失幾乎到手的冠軍之後。 Popovich 硬拖崩潰的馬刺隊全員出去吃飯。爆
[問卦] 有生的跟你說羨慕你沒生…是幹話嗎?小弟年近40,婚後約10年,目前膝下無子。 我爸媽或岳父母以前會催 但我考量很多因素,不想生,我老婆也不想生,所以他們長輩也就放棄了哈 只是我們自己的親戚朋友,或是堂哥姐,表弟妹等等,大多是同年齡層的 總會跟我們說,好羨慕你們沒有生小孩喔,可以過兩人世界真好,想去那就去拿,又說養爆
[問題] 吃餅乾掉很多屑年紀多小是可以接受的最近陸續有小孩來我家裡,發現國小生吃餅乾沒有用東西承接或者儘量不要掉餅乾屑的觀 念,最小大概小三,掉的大小大概一個指節長,而且滿多的 他們在家裡吃東西也是,不是只有去別人家才這樣 因為年紀真的有點小,想問大家這是可以接受的嗎?還是我太嚴苛 想出聲音但又覺得對方父母在,說話好像在教別人小孩97
Re: [討論] 你是什麼時候開始變成中共同路人的?先說謝謝支持時代力量。 留言裡面幾個問題,我先整理一些我在地方走訪, 我覺得該做但還沒做好的: 其實政見還是有分能喊跟不能喊的, 像是不排富的敬老金就是妥妥的財政濫用,會有票,但不該做不該喊。78
[問卦] 你上一本看的實體書是哪本書?現在…很多人…不太看書… 特別…是…實體的書本… 你…看的…上一本書…是…哪本… 有…卦嗎… --49
[閒聊] 你知道你在養房東嗎房客只要問我買房好嗎。我都是回。如果是自住。當然買 然後分享他們想買區域的優缺點 如果我知道的話 有一個房客還直接看房錄影傳給我。然後我們廚房客廳房間一一討論 最後下一個結論很適合你。他就買了 房東叫人買房。其實我覺得就是單純不想說違心之論16
Re: [討論] 你是什麼時候開始變成中共同路人的?我還是支持台獨的 我希望台灣獨立建國 我還參加過318 馬英九幹你娘也罵了不少 318結束後 我也支持民進黨一陣子 因為那時民進黨還是國會少數 後來民進黨上台了 變成執政黨 我還是覺得執政黨做錯事還是要罵 所以就支持了一個會罵執政黨的政黨 而不是民進黨