java - 在Spring初始化過程中阻塞合理嗎?
問題描述
讀到了 NettyRPC 的代碼, 發(fā)現(xiàn) RpcServer 中實(shí)現(xiàn)了 Spring 的 InitializingBean, 在方法實(shí)現(xiàn)里啟動(dòng)了一個(gè) Netty 服務(wù)器, 并且阻塞了.
@Overridepublic 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/...
我想問的是這樣阻塞不會(huì)對 Spring 的初始化造成影響嗎? (沒有讀過 Spring 源碼, 并不清楚情況, 求大家不吝賜教...
問題解答
回答1:感覺自己問了個(gè)很笨的問題... Spring容器的初始化過程是單線程的, 在這里阻塞住了自然就表示... 后續(xù)工作沒法進(jìn)行了.
在 bean 配置文件的最后面加了個(gè)測試的 Bean , 在初始化的時(shí)候會(huì)打log, 結(jié)果并沒有打出來.
回答2:這個(gè)應(yīng)該是合理的,因?yàn)槿绻嗑€程實(shí)例化Bean,那么Bean和Bean之間的依賴就很難處理了,代碼復(fù)雜度陡升。
回答3:合理,原因樓上已經(jīng)說了。如果異步初始化bean的需求,重寫B(tài)eanFactory的邏輯就好了,前提是你要確保這些bean沒有相互依賴關(guān)系
相關(guān)文章:
1. javascript - immutable配合react提升性能?2. javascript - sublime快鍵鍵問題3. 配置Apache時(shí),添加對PHP的支持時(shí)語法錯(cuò)誤4. Apache 已經(jīng)把網(wǎng)站根目錄的改為allow from all了,但是服務(wù)器還是不能訪問?5. css - 寫頁面遇到個(gè)布局問題,求大佬們幫解答,在線等,急!~6. phpstudy8.1支持win11系統(tǒng)嗎?7. javascript - nodejs關(guān)于進(jìn)程間發(fā)送句柄的一點(diǎn)疑問8. 實(shí)現(xiàn)bing搜索工具urlAPI提交9. vue.js - Vue 如何像Angular.js watch 一樣監(jiān)聽數(shù)據(jù)變化10. javascript - 移動(dòng)端上不能實(shí)現(xiàn)拖拽布局嗎?

網(wǎng)公網(wǎng)安備