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

注意:不要使用错误注解

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

(0)

相关推荐

  • springboot 没法扫描到repository的解决

    sprint boot2.0启动的时候报错! A component required a bean of type 'XXX' that could not be found. 就是没有扫描到我的repository包里的代码 我先用@ComponentScan注解加上类所在的包名,没有报错,可以正常启动 但是坑爹的是@RestController注解下的Controller层的代码没有扫描到 就是说http://127.0.0.1:8080可以正常访问,但是Controller层配置的@Re

  • springboot扫描引入jar包的service等组件方式

    在pom中引入对应的依赖,如果引入的三方jar包跟该项目Application所在包目录包含被依赖jar包目录, 即下面的情况: 像上面这种包组织的话,是不需要额外加入任何配置的(前提是依赖jar包相应组件一定要有@Component等注解修饰),因为springboot项目默认扫描目录就是Application所在目录及子目录,但是这种情况仅限于单个项目安排,项目大了就不一定满足了, 这时可以通过下面的方式引入扫描路径: 或者通过@ComponentScan注解也可以,需要注意的是不要忘了扫描

  • SpringBoot整合Mybatis无法扫描xml文件的解决

    网上说是使用idea在SpringBoot整合Mybatis时候会扫描不到xml文件 1.将xml文件放在resources下 2.在application.properties中配置xml文件的扫面 补充知识:Springboot整合mybatis /*.xml路径URl does not exist问题 解决一: 在配置文件下 扫描不到 xml文件: 原来的文件: <bean id="sqlSessionFactory" class="org.mybatis.spr

  • Springboot自动扫描包路径来龙去脉示例详解

    我们暂且标注下Springboot启动过程中较为重要的逻辑方法,源码对应的spring-boot-2.2.2.RELEASE版本 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; Collection<SpringBoo

  • Springboot 扫描mapper接口的2种操作

    方式一: 在所有mapper接口使用@Mapper注解 @Mapper (将包中的所有接口都标注为DAO层接口) public interface UserMapper { UserInfo getUserInfo(@Param("userId") String userId); } 方式二: 在springboot的启动类使用@MapperScan注解 (作用:将指定包中的所有接口都标注为DAO层接口,相当于在每一个接口上写@Mapper) @SpringBootApplicatio

  • springboot bean扫描路径的实现

    1:默认扫描启动类所在路径下所有的bean 2:可以在启动类中添加注解,手动指定扫描路径: @ComponentScan(basePackages = {"com.xxx.service1.*","com.xxx.service2.**"}) 补充:SpringBoot 是如何通过 @SpringBootApplication 扫描项目中的 Bean 原因 首先因为 XXXXXXXApplication 附带 @SpringBootApplication 注解,而

  • SpringBoot扫描不到Controller的解决方案

    SpringBoot小白创建项目,扫描不到Controller一系列问题 1. 2. 3. 4. 5. 6.还有一种办法是在启动服务类的入门,添加@ComponentScan(basePackages={"xxx.xxx.xx","xxx.xxx.xx"})里面的是包的全限定名,可以为多个 SpringBoot 自定义controller无法扫描到 SpringBoot 自定义controller路由找不到,原因是启动类和自定义的Controller包不在同一级目录

  • 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层找不到了 解决:使用@MapperSc

  • MyBatis详解如何实现Dao层接口

    目录 传统开发方式 编写UserDao接口 编写UserDaompl实现 传统测试方法 代理开发方法 代理开发方式介绍 编写UserMapper接口 测试代理方法 传统开发方式 编写UserDao接口 public interface UserMapper { public List<User> findAll() throws IOException; } 编写UserDaompl实现 public class UserMapperImp implements UserMapper { @O

  • MyBatis在DAO层定义接口返回类型泛型无效的解决

    MyBatis DAO层定义接口返回类型泛型无效 今天很偶然的因为一次粗心而发现的一个mybatis问题,这里就写出来与大家分享一下. DAO层定义了一个接口,返回String集合,用于获取最热门的搜索信息. mapper.xml文件接口返回的类型却是search对象. 调用接口,返回的是search对象集合,没有报错,泛型没起到作用. 仔细一想,泛型是在编译阶段将我们的返回值类型匹配到一具体类型,而DAO层的接口却没有具体的返回值信息,所以在编译阶段它是可以通过的,这也就是说我们在DAO层定义

  • Spring Dao层@Repository与@Mapper的使用

    目录 SpringDao层@Repository与@Mapper 1.@Mapper 2.@Repository 3.其他扫描手段 4.小结 @Mapper和@Repository的区别 1.相同点 2.不同点 Spring Dao层@Repository与@Mapper 使用注解的方式开发Dao层的时候,常常会混淆这两个注解,不知道怎么添加,这里做个记录. 1.@Mapper @Mapper 是 Mybatis 的注解,和 Spring 没有关系,@Repository 是 Spring 的注

  • MyBatis开发Dao层的两种方式实现(原始Dao层开发)

    本文将介绍使用框架mybatis开发原始Dao层来对一个对数据库进行增删改查的案例. Mapper动态代理开发Dao层请阅读我的下一篇博客:MyBatis开发Dao层的两种方式(Mapper动态代理方式) 本次使用的mybatis版本为mybatis-3.2.7,开发工具为eclipse,数据库为mysql,jdk版本jdk1.8.0_151. SqlSession使用范围 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlS

  • SpringBoot启动自动终止也不报错的原因及解决

    目录 SpringBoot启动自动终止也不报错 原因 解决方案 springboot 启动一段时间之后自动挂掉的解决 解决办法 SpringBoot启动自动终止也不报错 Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. Disconnected from the target VM, address: '

  • 关于MVC的dao层、service层和controller层详解

    目录 MVC的dao层.service层和controller层 1.dao层 2.service层 3.controller层 4.view层 5.它们之间的关系 关于dao层/mapper层的一些笔记 1.BaseMapper 2.@mapper MVC的dao层.service层和controller层 1.dao层 dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以

  • 详解SpringBoot启动类的扫描注解的用法及冲突原则

    背景 SpringBoot 启动类上,配置扫描包路径有三种方式,最近看到一个应用上三种注解都用上了,代码如下: @SpringBootApplication(scanBasePackages ={"a","b"}) @ComponentScan(basePackages = {"a","b","c"}) @MapperScan({"XXX"}) public class XXApplic

  • springboot 启动项目打印接口列表的实现

    目录 springboot 启动项目打印接口列表 环境 修改配置文件 Springboot项目添加接口入参统一打印 新建注解,用于实现参数打印功能的增强 自定义序列化规则 写参数打印增强,这里选择环绕增强 springboot 启动项目打印接口列表 环境 springboot 2.3.2.RELEASE 修改配置文件 logging: level: org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandle

  • Spring main方法中如何调用Dao层和Service层的方法

    目录 Spring main方法调用Dao层和Service层的方法 如何在普通类中直接访问service层或dao层 第一种方案 第二种方案 Spring main方法调用Dao层和Service层的方法 在web环境中,一般serviceImpl中的dao之类的数据库连接都由容器启动的时候创建好了,不会报错. 但是在main中,没有这个环境,所以需要获取环境: ApplicationContext ctx = new FileSystemXmlApplicationContext("src/

随机推荐