作者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/cn.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