springboot啟動掃描不到dao層接口的解決方案
今天啟動springboot項目時失敗瞭
解決
檢查原因發現是啟動類的MapperScan(“”)的值寫到類名瞭,改成類所在的包名錯誤就修復瞭。
springboot 掃描不到dao層和controller
一、提示
A component required a bean of type ‘com.imooc2.product.category.dao.ProductCategoryDao’ that could not be found即dao層找不到瞭
解決:使用@MapperScan 註解或者@MapperScans註解
import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScans; import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableSwagger2 @SpringBootApplication @MapperScan("com.imooc2.product.**.dao") public class ProductApplication {//extends SpringBootServletInitializer public static void main(String[] args) { SpringApplication.run(ProductApplication.class, args); } }
二、問題:
- 提示controller和services層找不到
- 訪問controller的方法顯示404錯誤
解決:
1、啟動類放到跟目錄下面,如圖,我的controller和service分別在com.imooc2.product的product文件夾和category文件夾裡面,所以啟動類要放在根目錄com.imooc2.product下
原因:sprigboot 會自動掃描根目錄以下的全部包
2、有可能是緩存還是項目啟動類識別不瞭controller層和service層,或者你不想把啟動類放到根目錄下去默認掃描,可以更新至springboot 2.0.5.RELEASE,使用自定義掃描包註解
@ComponentScan(basePackages = {“com.imooc2.product.product”, “com.imooc2.product.category”})
或者
@SpringBootApplication(scanBasePackages = {“com.imooc2.product.product”, “com.imooc2.product.category”})
二選一即可如圖所示
@SpringBootApplication(scanBasePackages = {"com.imooc2.product","com.imooc2.product.**.dao"})//二選一 @ComponentScan(basePackages = {"com.imooc2.product.product", "com.imooc2.product.category"})//二選一 @MapperScan("com.imooc2.product.**.dao") public class ProductApplication { public static void main(String[] args) { SpringApplication.run(ProductApplication.class, args); } }
註意:不要使用錯誤註解
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- springBoot mybatis 包掃描實例
- springBoot 項目排除數據庫啟動方式
- SpringBoot 在測試時如何指定包的掃描范圍
- 利用idea快速搭建一個spring-cloud(圖文)
- SpringBoot默認包掃描機制及@ComponentScan指定掃描路徑詳解