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);
    }
}

二、問題:

  1. 提示controller和services層找不到
  2. 訪問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。

推薦閱讀: