Re: [請益] Spring boot的依賴注入降低耦合的例子
比較早版本的spring 只能利用xml來依賴注入
其實反而比較好理解
spring 如果只有設定好xml的依賴注入
但是沒有設好依賴反轉(也就是宣告成介面)
那就會發現
當你要新增一個功能時 還是要去改動程式碼
但如果宣告成介面
而流程也沒有改變
但需要新功能時
其實只要新增一個實作,並改動xml
就能解決問題
這是最接近開閉原則
不修改軟體 但可以擴展軟體
類似任天堂換遊戲就換卡匣的方式
修改xml 就是 把卡匣拔出來 換新卡匣
後面的spring 改成可以用註解跟設定檔(config.java)的方式
反而會比較不好理解
因為都像是在改程式
補充一下任天堂的類比:
所有的遊戲卡匣只要遵循卡匣介面實作幾個方法
上 方法()
下 方法()
左 方法()
右 方法()
A 方法()
B 方法()
開始()
。。()
就能在任天堂主機裡被使用(xml抽換卡匣)
但如果今天有一個卡匣硬是多了一個C按鈕與C方法
而為了使生效,那就只能去修改任天堂主機(違反開閉原則)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.145.188 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1650431976.A.2D0.html
→
04/21 09:24,
2年前
, 1F
04/21 09:24, 1F
→
04/21 09:26,
2年前
, 2F
04/21 09:26, 2F
如果是怕xml打錯 spring會提供基本的除錯
最理想的設計情況 是只要新增calss 就能完成功能修改
程式主體完全不用動 測試上就少了很多
spring boot 比 spring 方便許多
但也因為他省略了很多設定 直接學spring boot會比較不好理解
其實spring 是用反射機制去xml找出class檔 幫你new出來
所以也不一定要寫在xml上
其他文字檔理論上也可以(但可能就要自己寫一套)
只是你如果注入是寫在註解或config.java
很難去解釋為什麼還是要去更動程式主體才能完成功能修改
但如果是寫在xml或文字檔
你就可以說 這次只要新增calss就能完成任務 不用動到程式
→
04/21 12:04,
2年前
, 3F
04/21 12:04, 3F
json比xml更像資料 類似簡化的xml
反而xml說是設定檔 還比較可以接受
可以用config.java 但心裡歸類成xml
※ 編輯: chal (36.235.66.147 臺灣), 04/21/2022 12:28:50
→
04/22 22:16,
2年前
, 4F
04/22 22:16, 4F
→
04/22 22:16,
2年前
, 5F
04/22 22:16, 5F
討論串 (同標題文章)
完整討論串 (本文為第 8 之 8 篇):