關于spring.factories失效原因分析及解決
spring.factories失效原因及解決
那么在 Spring Boot 項目中,如果被 Spring 容器管理的 bean 不在 Spring Boot 包掃描路徑下,怎么辦?
解決Spring Boot 中不能被默認路徑掃描的配置類的方式,有 2 種:
- (1)在 Spring Boot 主類上使用 @Import 注解
- (2)使用 spring.factories 文件
失效的原因
如果是缺失@Component\@Configuration之類的注解,或者在spring.factories文件忘記添加類,就沒啥好講的。
如果是缺失@EnableAutoConfiguration那就加上,不過如果已經(jīng)有@SpringBootApplication注解,就不是這個問題,因為它已經(jīng)包含@EnableAutoConfiguration。
如果不是上面兩類問題,那么考慮以下2點:
1.被依賴包的打包方式
注意被依賴包的pom文件是否設置了依賴包的打包模式是不是pom
即有如下配置:
<packaging>pom</packaging>
使用pom打包時,不會生成jar包,自然在引入時就沒有自動注入的過程,因此刪掉它,重新編譯可以解決問題。
2.springboot版本問題
Spring Boot 2.7中不推薦使用/META-INF/spring.factories文件,并且在Spring Boot 3將移除對/META-INF/spring.factories的支持。
新的寫法是創(chuàng)建一個新的文件:
/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
內(nèi)容直接放配置類即可(注意有spring目錄)
比如這樣:
com.example.swagger.SwaggerAutoConfiguration
如果springboot版本高于2.7,切換到新寫法試試。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot集成geodesy實現(xiàn)距離計算功能
Geodesy:大地測量學的神奇力量 Geodesy,又稱大地測量學,是一門研究地球形狀、大小及其重力場的學科,在地球距離計算中,它扮演著至關重要的角色,故本文給大家介紹了SpringBoot集成geodesy實現(xiàn)距離計算功能,感興趣的朋友可以參考下2024-06-06
idea創(chuàng)建springboot項目,java版本只能選擇17和21的解決方案
這篇文章主要介紹了idea創(chuàng)建springboot項目,java版本只能選擇17和21的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
Struts2學習筆記(3)-DMI動態(tài)調(diào)用方式
本文主要介紹Struts2的DMI動態(tài)調(diào)用的兩種方式,簡單實用,希望能給大家做一個參考。2016-06-06

