稻壳er 2019-08-28 16:23 采纳率: 0%
浏览 1415

springboot将Controller包、Mapper(DAO)包与启动类放置于同一包内仍扫描不到。

用springboot开发web服务端,同时使用mybatis、swagger。项目目录如下:
图片说明

首先是DAO包中的mapper文件无法扫描到,mybatis-config中已经相关配置:

    <mappers>
        <mapper resource="Mapper/*.xml" />
        <package name="com.storm.datemanager.DAO"/>
    </mappers>

运行失败后报如下错误:

Description:

Field userInfoMapper in com.storm.datemanager.Service.UserInfoService required a bean of type 'com.storm.datemanager.DAO.UserInfoMapper' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.storm.datemanager.DAO.UserInfoMapper' in your configuration.

其次,在通过swagger显示controller时为空,url访问controller时报404错误,应该也是没有扫描到Controller文件夹controller代码如下

@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/admin")
@Api(tags = "管理员模块")
public class AdminController {

    @Autowired
    private UserInfoService userInfoService;

    @ApiOperation(value = "获取所有用户")
    @GetMapping("/fetchAllUsers")
    public Result<List<UserInfo>> fetchAllUsers(@ApiParam("管理员ID")@RequestParam String Id){
        return userInfoService.fetchAllUser(Id);
    }
}

后想再次使用componentscan时,仍然报错找不到DAO中的mapper

@SpringBootApplication
@EnableSwagger2
@ComponentScans(value = {
        @ComponentScan("com.storm.datemanager.DAO"),
        @ComponentScan("com.storm.datemanager.Controller")
})
public class DatemanagerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DatemanagerApplication.class, args);
    }

}

据说springboot的包扫描机制是扫描启动类所在的包以及其子包的所有文件,那么理论上来说这样的目录结构是不需要ComponentScan的,可是为何ComponentScan mapper文件可行,而ComponentScans两个文件夹就不可以?
求大佬解惑

  • 写回答

3条回答 默认 最新

  • Random17 2019-08-28 16:41
    关注

    mapper的位置填写方式不对吧,是不是少了 classpath前缀

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?