为了账号安全,请及时绑定邮箱和手机立即绑定

在Spring初始化过程中阻塞合理吗?

在Spring初始化过程中阻塞合理吗?

jeck猫 2019-03-01 10:55:39
读到了 NettyRPC 的代码, 发现 RpcServer 中实现了 Spring 的 InitializingBean, 在方法实现里启动了一个 Netty 服务器, 并且阻塞了. @Override public void afterPropertiesSet() throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { // 前略... future.channel().closeFuture().sync(); } finally { workerGroup.shutdownGracefully(); bossGroup.shutdownGracefully(); } } 源码地址:https://github.com/luxiaoxun/... 我想问的是这样阻塞不会对 Spring 的初始化造成影响吗? (没有读过 Spring 源码, 并不清楚情况, 求大家不吝赐教...
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

感觉自己问了个很笨的问题... Spring容器的初始化过程是单线程的, 在这里阻塞住了自然就表示... 后续工作没法进行了.

在 bean 配置文件的最后面加了个测试的 Bean , 在初始化的时候会打log, 结果并没有打出来.

查看完整回答
反对 回复 2019-03-01
?
MMTTMM

TA贡献1869条经验 获得超4个赞

这个应该是合理的,因为如果多线程实例化Bean,那么Bean和Bean之间的依赖就很难处理了,代码复杂度陡升。

查看完整回答
反对 回复 2019-03-01
?
湖上湖

TA贡献2003条经验 获得超2个赞

合理,原因楼上已经说了。如果异步初始化bean的需求,重写BeanFactory的逻辑就好了,前提是你要确保这些bean没有相互依赖关系

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 628 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号