@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 模式,因為一個註解可以配置多個包路徑。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: