class TibcoPasswordRetriever { private TibcoPasswordUtil tibcoPasswordUtil; public TibcoPasswordRetriever(TibcoPasswordUtil tibcoPasswordUtil) { this.tibcoPasswordUtil = tibcoPasswordUtil; }}class TibcoPasswordRetriever { private TibcoPasswordUtil tibcoPasswordUtil; public TibcoPasswordRetriever() { this.tibcoPasswordUtil = new TibcoPasswordUtil(); }}這是 TibcoPasswordRetriever 的兩個定義。問題:我僅在 TibcoPasswordRetriever 類中使用 TibcoPasswordUtil。依賴注入仍然是一個好主意嗎?進一步的問題:我們是否應該創建將每個可能的對象公開為 spring bean(只是因為可以這樣做)
2 回答

慕虎7371278
TA貢獻1802條經驗 獲得超4個贊
問題:我僅在 TibcoPasswordRetriever 類中使用 TibcoPasswordUtil。依賴注入仍然是一個好主意嗎?
如果TibcoPasswordUtil
是Singletone
. 您沒有TibcoPasswordUtil
在問題中提供課程。添加Util
到名稱在這里并不意味著很多??紤]寫更多關于架構和背景的文章。
進一步的問題:我們是否應該創建將每個可能的對象公開為 spring bean(只是因為可以這樣做)
不,不是,因為更好的解決方案是不要太依賴框架。問自己這樣的問題:
如果你不需要,那么為什么它有好處呢?
為什么不這樣做有好處呢?
就像我上面寫的那樣,更少耦合的代碼更好。將來改變框架等會更容易。

繁花不似錦
TA貢獻1851條經驗 獲得超4個贊
不,除非有需要,否則不應將每個對象都公開為 Spring bean。那些您認為必須由框架實例化和維護的類必須成為一個 bean。此類類的一個示例是數據庫訪問類。這些類型的類可能有多種實現,并且選擇使用哪個實現可能取決于某些外部配置。在這種情況下,您可以將管理實例的責任委托給框架。
如果您確定您正在使用的 Util 類只有一種類型,并且管理其實例時不會增加任何復雜性(就像它必須是 Singleton),那么您不必將其設為 bean。
添加回答
舉報
0/150
提交
取消