java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot扫描不到dao层和controller

springboot扫描不到dao层和controller问题及解决过程

作者:SnaiI

本文分享SpringBoot开发中常见问题的解决经验,包括Dao层组件找不到和Controller访问404错误,通过@MapperScan注解、调整启动类位置或自定义扫描包,快速定位并修复问题,提升开发效率

一、提示

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

}

注意:不要使用错误注解

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文