Spring Boot无法自动注入bean问题解决方案

前言:在使用Spring Boot+Mybatis时,写完Mapper接口、Service、Controller后,启动(图1)打包项目(图2)均失败,提示无法自动注入bean。

完成目标:

1、无法自动注入bean错误信息

2、代码展示

3、解决方案

一、错误信息:

Description:
Field userMapper in com.openplat.system.service.UserService required a bean of type 'com.openplat.system.mapper.UserMapper' that could not be found.

Action:
Consider defining a bean of type 'com.openplat.system.mapper.UserMapper' in your configuration.

图1



图2



二、代码展示:

1、UserMapper.java


2、UserService.java


3、UserController.java



三、解决办法:

根据英文的提示是在配置中找不到一个指定自动注入类型的bean, SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描! Application类是指SpringBoot项目入口类。
这个类的位置很关键:  如果Application类所在的包为:com.openplat,则只会扫描com.openplat包及其所有子包,如果mapper、service所在包不在com.openplat及其子包下,则不会被扫描。

即, 把Application类放到mapper、service所在包的上级,com.openplat.OpenPlatApplication 
知道这一点非常关键,不知道Spring文档里有没有给出说明,如果不知道还真是无从解决。

两种解决办法: 
  1 .将接口与对应的实现类放在与application启动类的同一个目录或者他的子目录下,这样注解可以被扫描到,这是最省事的办法

  2 .在指定的application类上加上这么一行注解,手动指定application类要扫描哪些包下的注解(图3)

图3

@ComponentScan(basePackages = "com.openplat.system.mapper.*")



Spring Boot与Spring Cloud学习使用可参看笔者博客


  • 34
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 41
    评论
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值