[問題] Spring Bean和new Object

作者: neetpride (找到工作就回老家結婚)   2018-11-22 10:55:28
大家好~
有點不知道該怎麼描述問題,表達不好還請見諒
想請問
若某個Service使用的頻率極端少,可能只有在系統上線時才會執行一次
在這種情況下
使用@Service + @Autowired的方式注入Spring Bean
和使用new Service()的方式建構Service的Object
哪種方式會比較好呢?
看過這篇之後
https://stackoverflow.com/questions/50713088/spring-service-vs-object-service
我的理解是
Spring Bean是singleton
從啟動時會被載入,系統結束時才會執行銷毀
這樣對於使用頻率極少的Service
是不是使用new,在被呼叫時才建構,並交由GC管理回收會比較好呢?
如果我的觀念有錯還麻煩各位前輩多多指導
非常感謝
作者: MonyemLi (life)   2018-11-22 13:18:00
new表不讓spring處理. 裡面的@xxxx全數無效.
作者: ssccg (23)   2018-11-22 15:16:00
其實還是可以自己new出來再丟給spring處理回原po,用spring時統一管理比較好,除非你那個Service裡面會載入大量資料,否則就幾個byte不值得犧牲架構維護性
作者: jej (晃奶大馬桶)   2018-11-22 21:56:00
怎麼不標註lazy
作者: ssccg (23)   2018-11-23 09:12:00
lazy是延後建構,用完還是留著,如果希望用完要GC不適用
作者: neetpride (找到工作就回老家結婚)   2018-11-23 17:05:00
如果搭配@Scope可以做到類似效果嗎?另 在這種情況下GC的成本是不是反而會比較高呢?
作者: ssccg (23)   2018-11-23 18:01:00
如果這個Service在你設計裡的lifecycle是有scope的話,當然用@Scope可以,至於對效能影響,要看你的使用頻率和載入成本到底多少,做profile才知道
作者: jakarta99   2018-11-23 18:28:00
new Service() 成本太高

Links booklink

Contact Us: admin [ a t ] ucptt.com