場景:在原有的Spring Boot環境中新增Consul服務,同時使用@FeignClient調用接口。
Bug:啟動時,實現了接口ApplicationListener<ContextRefreshedEvent>的類報空指針異常。
原因:FeignClient初始化時,會注冊一個新的FeignContext,然后導致NPE。該項目的容器初始過程有:FeignContext ---> web servlet context ---> application context。
所以解決NPE的方法就是執行FeignContext 初始化時,不執行ApplicationListener<ContextRefreshedEvent>中的onApplicationEvent方法。