讀到了 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 源碼, 並不清楚情況, 求大家不吝賜教...
黄舟2017-06-23 09:16:20
感覺自己問了個很笨的問題... Spring容器的初始化過程是單線程的, 在這裡阻塞住了自然就表示... 後續工作沒法進行了.
在 bean 設定檔的最後面加了個測試的 Bean , 在初始化的時候會打log, 結果並沒有打出來.