SpringBootApplication的exclude不生效問題排查

SpringBootApplication的exclude不生效問題排查

背景

ManApplication上添加了SpringBootApplication中配置了exclude={org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration.class}

但是在啓動過程了ElasticsearchAutoConfiguration還是加載了,使用配置文件的方式就可以避免加載。

排查

首先懷疑是不是啓動的類加載了ElasticsearchAutoConfiguration的初始化方法,查找無果。

於是想通過SpringBootApplication的啓動過程來排查。

SpringBootApplication的啓動入口是SpringApplication.run()方法。

調用時序圖可以參考以下:
在這裏插入圖片描述

在debug的過程中發現還有其他的@EnableAutoConfiguration註解,更直白的說是jar包存在類中@SpringBootApplication沒有exclude. 從EnableAutoConfigurationImportSelector類可以看到getExclusions的邏輯正好解釋了這一現象。

在這裏插入圖片描述

另外從註解可以直接達到,以後有關@…AutoConfiguration的應該找註解上的@Import註解中的解析類,可以直達解析邏輯。

結論

  1. 使用配置的方式進行exclude
  2. 推動包含@EnableAutoConfiguration的去掉,因爲jar包內不應該有。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章