[問題] Spring Bean和new Object

看板java作者 (尼特)時間6年前 (2018/11/22 10:55), 6年前編輯推噓1(1011)
留言12則, 5人參與, 6年前最新討論串1/1
大家好~ 有點不知道該怎麼描述問題,表達不好還請見諒 想請問 若某個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

11/22 13:18, 6年前 , 1F
new表不讓spring處理. 裡面的@xxxx全數無效.
11/22 13:18, 1F

11/22 15:16, 6年前 , 2F
其實還是可以自己new出來再丟給spring處理
11/22 15:16, 2F

11/22 15:19, 6年前 , 3F
回原po,用spring時統一管理比較好,除非你那個Service裡面
11/22 15:19, 3F

11/22 15:20, 6年前 , 4F
會載入大量資料,否則就幾個byte不值得犧牲架構維護性
11/22 15:20, 4F
謝謝各位 其實這個專案雖然有用spring boot但只有用到@Controller相關 我想從現在開始把一些簡單的功能改用spring bean的方式來做 只是不知道會不會對效能有影響 再次感謝各位 ※ 編輯: neetpride (1.173.97.169), 11/22/2018 20:34:44

11/22 21:56, 6年前 , 5F
怎麼不標註lazy
11/22 21:56, 5F
原來還有Lazy 馬上試一下 謝謝 ※ 編輯: neetpride (42.77.80.35), 11/23/2018 08:40:29

11/23 09:12, 6年前 , 6F
lazy是延後建構,用完還是留著,如果希望用完要GC不適用
11/23 09:12, 6F

11/23 17:05, 6年前 , 7F
如果搭配@Scope可以做到類似效果嗎?
11/23 17:05, 7F

11/23 17:05, 6年前 , 8F
另 在這種情況下GC的成本是不是反而會比較高呢?
11/23 17:05, 8F

11/23 18:01, 6年前 , 9F
如果這個Service在你設計裡的lifecycle是有scope的話,當然
11/23 18:01, 9F

11/23 18:03, 6年前 , 10F
用@Scope可以,至於對效能影響,要看你的使用頻率和載入成
11/23 18:03, 10F

11/23 18:03, 6年前 , 11F
本到底多少,做profile才知道
11/23 18:03, 11F

11/23 18:28, 6年前 , 12F
new Service() 成本太高
11/23 18:28, 12F
文章代碼(AID): #1RzXgaRi (java)
文章代碼(AID): #1RzXgaRi (java)