@MapperScan和@ComponentScan一块使用导致冲突的解决

 更新时间:2021年11月05日 15:52:39   作者:三人行必有吾师焉  
这篇文章主要介绍了@MapperScan和@ComponentScan一块使用导致冲突的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@MapperScan和@ComponentScan一块使用冲突

项目集成了knief4j

报错:

NoSuchBeanDefinitionException: No qualifying bean of type 'springfox.documentation.schema.TypeNameExtractor'

很明显是容器缺少必须的bean,启动不成功

解决方案

方案一

@MapperScan和@ComponentScan一起使用

1.建一个配置类

启动类不做改变

package com.test.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.test.bean")
public class FileNameUtilsConfig {
}

方案二

启动类做改变,使用@MapperScan一块扫描

@MapperScan(basePackages = {"com.test.mapper","com.test.bean"})

项目中@MapperScan和@Mapper共存之坑XxxMapper that could not be found.

公司项目有个小伙子将项目的日志功能做了优化。今天在pom添加依赖,在启动类上加个注解,然后启动项目突然报了ModuleMapper 找不到。

加粗样式

项目一直是好的,又没有对这个mapper修改。进入ModuleMapper 中发现上面也是有@Mapper注解的

在这里插入图片描述

可是为什么容器找不到呢,分析一下刚刚修改的才做,引入依赖加注解,问题可能是注解上的问题,注释掉添加的注解,启动服务正常运行。罪魁祸首就是这个注解。

点解注解发现配置类上有个@MapperScan扫描注入。发现这伙计需要操作数据库。而我接收负责的项目用的是传统的@Mapper注入。

在这里插入图片描述

思考:难道在一个项目中@MapperScan和@Mapper不能共存吗?

尝试解决

自己创建一个springboot 项目,开始用@Mapper 注入容器 启动程序。程序正常启动。

在这里插入图片描述

在这里插入图片描述

停掉服务,将mapp文件上的@Mapper删除 ,将文件移动到mapper文件中,在启动类上添加@MapperScan 扫包注入。正常启动。

在这里插入图片描述

在这里插入图片描述

现在测试@MapperScan 和@Mapper 分别在不包中测试一下。现在将UserMapper 放在mapper包中, 将UserTokenMapper 放在mapper2包中并添加@Mapper 启动测试。

启动类:

在这里插入图片描述

UserMapper :

在这里插入图片描述

UserTokenMapper :

在这里插入图片描述

启动项目报错:

Description:

Field userTokenMapper in com.wyz.yangyang.member.service.impl.MemberServiceImpl required a bean of type ‘com.wyz.yangyang.member.mapper2.UserTokenMapper' that could not be found.

Action:

Consider defining a bean of type ‘com.wyz.yangyang.member.mapper2.UserTokenMapper' in your configuration.

Disconnected from the target VM, address: ‘127.0.0.1:56527', transport: ‘socket'

Process finished with exit code 1

在这里插入图片描述

然后我有测试可@MapperScan 扫描的包中不放mapper 文件,mapper2 中mapper文件都添加@Mapper,发现启动正常。

又测试了@MapperScan 和@Mapper 同在一个包中,启动正常。

在此可以看出 @MapperScan 和@Mapper在不同包中,@Mapper注解失效。

为了项目快速开发,为了以后更好的兼容,我将项目改为@MapperScan 模式,因为一个注解可以配置多个包路径。

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

相关文章

  • SpringBoot自动配置原理及案例源码解析

    SpringBoot自动配置原理及案例源码解析

    这篇文章主要为大家介绍了SpringBoot自动配置原理及自动配置案例源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • JavaWeb如何实现限制单个账号多处登录

    JavaWeb如何实现限制单个账号多处登录

    这篇文章主要介绍了JavaWeb如何实现限制单个账号多处登录问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Android设备如何保证数据同步写入磁盘的实现

    Android设备如何保证数据同步写入磁盘的实现

    这篇文章主要介绍了Android设备如何保证数据同步写入磁盘的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • java重写(@Override)介绍以及举例说明

    java重写(@Override)介绍以及举例说明

    这篇文章主要给大家介绍了关于java重写(@Override)介绍以及举例说明的相关资料,在Java中@Override注解用于表示方法重写(覆盖)了父类的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • java JSP开发之Spring中Bean的使用

    java JSP开发之Spring中Bean的使用

    这篇文章主要介绍了java JSP开发之Spring中Bean的使用的相关资料,在Spring中,bean的生命周期就比较复杂,这里就详细介绍下,需要的朋友可以参考下
    2017-08-08
  • JAVA泛型之泛型方法的定义和使用方式

    JAVA泛型之泛型方法的定义和使用方式

    这篇文章主要介绍了JAVA泛型之泛型方法的定义和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • jmeter实现接口关联的两种方式(正则表达式提取器和json提取器)

    jmeter实现接口关联的两种方式(正则表达式提取器和json提取器)

    Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,本文主要介绍了jmeter实现接口关联的两种方式,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Quartz定时任务管理方式(动态添加、停止、恢复、删除定时任务)

    Quartz定时任务管理方式(动态添加、停止、恢复、删除定时任务)

    这篇文章主要介绍了Quartz定时任务管理方式(动态添加、停止、恢复、删除定时任务),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java中实现时间类型转换的代码详解

    Java中实现时间类型转换的代码详解

    这篇文章主要为大家详细介绍了Java中实现时间类型转换的相关方法,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考下
    2023-09-09
  • springboot获取当前用户信息的三种方式

    springboot获取当前用户信息的三种方式

    本文详细介绍了在开发中获取当前操作用户信息的三种方式:使用ThreadLocal存储用户信息、通过拦截器和注解结合Shiro框架获取用户信息、以及使用Redis存储用户信息,每种方式都有具体的实现步骤和注意事项,可根据实际需求选择合适的方法
    2024-10-10

最新评论