作者neetpride (尼特)
看板java
標題[問題] Spring Bean和new Object
時間Thu Nov 22 10:55:28 2018
大家好~
有點不知道該怎麼描述問題,表達不好還請見諒
想請問
若某個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://webptt.com/m.aspx?n=bbs/java/M.1542855332.A.6EC.html
1F:→ MonyemLi: new表不讓spring處理. 裡面的@xxxx全數無效. 11/22 13:18
2F:→ ssccg: 其實還是可以自己new出來再丟給spring處理 11/22 15:16
3F:→ ssccg: 回原po,用spring時統一管理比較好,除非你那個Service裡面 11/22 15:19
4F:→ ssccg: 會載入大量資料,否則就幾個byte不值得犧牲架構維護性 11/22 15:20
謝謝各位
其實這個專案雖然有用spring boot但只有用到@Controller相關
我想從現在開始把一些簡單的功能改用spring bean的方式來做
只是不知道會不會對效能有影響
再次感謝各位
※ 編輯: neetpride (1.173.97.169), 11/22/2018 20:34:44
5F:推 jej: 怎麼不標註lazy 11/22 21:56
原來還有Lazy 馬上試一下 謝謝
※ 編輯: neetpride (42.77.80.35), 11/23/2018 08:40:29
6F:→ ssccg: lazy是延後建構,用完還是留著,如果希望用完要GC不適用 11/23 09:12
7F:→ neetpride: 如果搭配@Scope可以做到類似效果嗎? 11/23 17:05
8F:→ neetpride: 另 在這種情況下GC的成本是不是反而會比較高呢? 11/23 17:05
9F:→ ssccg: 如果這個Service在你設計裡的lifecycle是有scope的話,當然 11/23 18:01
10F:→ ssccg: 用@Scope可以,至於對效能影響,要看你的使用頻率和載入成 11/23 18:03
11F:→ ssccg: 本到底多少,做profile才知道 11/23 18:03
12F:→ jakarta99: new Service() 成本太高 11/23 18:28