看板 java 關於我們 聯絡資訊
大家好~ 有點不知道該怎麼描述問題,表達不好還請見諒 想請問 若某個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管理回收會比較好呢? 如果我的觀念有錯還麻煩各位前輩多多指導 非常感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.139.207.189 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1542855332.A.6EC.html
MonyemLi: new表不讓spring處理. 裡面的@xxxx全數無效. 11/22 13:18
ssccg: 其實還是可以自己new出來再丟給spring處理 11/22 15:16
ssccg: 回原po,用spring時統一管理比較好,除非你那個Service裡面 11/22 15:19
ssccg: 會載入大量資料,否則就幾個byte不值得犧牲架構維護性 11/22 15:20
謝謝各位 其實這個專案雖然有用spring boot但只有用到@Controller相關 我想從現在開始把一些簡單的功能改用spring bean的方式來做 只是不知道會不會對效能有影響 再次感謝各位 ※ 編輯: neetpride (1.173.97.169), 11/22/2018 20:34:44
jej: 怎麼不標註lazy 11/22 21:56
原來還有Lazy 馬上試一下 謝謝 ※ 編輯: neetpride (42.77.80.35), 11/23/2018 08:40:29
ssccg: lazy是延後建構,用完還是留著,如果希望用完要GC不適用 11/23 09:12
neetpride: 如果搭配@Scope可以做到類似效果嗎? 11/23 17:05
neetpride: 另 在這種情況下GC的成本是不是反而會比較高呢? 11/23 17:05
ssccg: 如果這個Service在你設計裡的lifecycle是有scope的話,當然 11/23 18:01
ssccg: 用@Scope可以,至於對效能影響,要看你的使用頻率和載入成 11/23 18:03
ssccg: 本到底多少,做profile才知道 11/23 18:03
jakarta99: new Service() 成本太高 11/23 18:28