靜態代碼塊中使用Spring Bean導致空指針異常
可以知道的是,spring bean是對象層次的,而靜態代碼塊是類層次的
如圖:這種情況下外層靜態代碼塊使用classloader去加載RoomTopicObserverImpl
而里層classloader又去加載spring bean,看上去好像沒有什么問題。實際上這里會發生NullPointerException
異常
因為spring bean的初始化發生在運行時階段,而類加載先於這個過程,所以導致空指針
解決辦法:
將外層加載對象放到成員實例方法中