@ContextConfiguration配置默認servlet處理需要servletcontext spring org.springframework.util.Assert.notNull錯誤

錯誤提示
如果使用了Assert.assertnotnull 的方法的話,有可能是斷言失敗

這個錯誤出現,在找不到別的原因的時候,基本可以斷定是jar包版本不兼容的問題

  1. 首先檢查spring-test jar包的版本號,因爲這個jar包有可能是系統引用的,版本不兼容
  2. 然後檢查spring 的其餘包的版本號是否一致
  3. 然後檢查引用的集成的特殊的包

@ContextConfiguration
ContextConfiguration 的使用配置默認servlet處理需要servletcontext
產生這種狀況的根本原因

  • 執行了@EnableWebMvc,這個就是最直接的原因
  • 根本原因:啓動WebMvc 需要servletcontext(底層的東西以後會在想下面進行補充)

很多人感覺自己引用的類裏面沒有@EnableWebMvc啊!
下面說一下我的經驗:
一般來說我們需要引用的是配置的 config 文件,config文件一般來說都會掃描一些別的包,引入各種東西,甚至有一些小夥伴在掃描的時候根據很多教材的版本,直接掃描 classpath 根目錄,這種情況也是存在的,這種情況就說明你的 mvc 的配置文件也通過掃描,這就說明 mvc 中的@enableMebMvc 得到了有效的引入執行。
下面就說一說解決方案吧!
一般網上有兩種解決方案:

  • 第一種方案:@contextConfiguration中不要含有@EnableWebMvc
  • 第二種方案:在測試類中加入@WebApplicationContext註解來配置Servlet環境。
    當我還是小萌新的時候,大佬解釋到這一步我還是一臉懵逼。
    怎麼不含有@EnableWebMvc 啊,刪了?
    @ComponentScan 的過濾方法
    我們通過屬性的設置,過濾掉我們不需要掃描的包
@ComponentScan(basePackages = {"****"},
excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)})

excludeFilers屬性是設置過濾文件的。

未完待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章