[问题] 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