springboot不加载mapper文件问题解析

1. 场景描述

启动的时候报”springboot available: expected at least 1 bean which qualifies as autowire candidate“。

2. 解决方案

该错误一眼看过去,简单说就是bean无效,无法注入,使用的@Autowired或者@Resource注入bean有问题。

才想起来昨天从其他地方新加入一个mapper文件,为了区分现在的mapper,就单独放到一个文件夹里了。

2.1 问题定位

(1)首先确认新建文件夹是否启动类Application在同级或者下级目录,检查后发现在,那为什么没有加载?

(2)然后检查了启动类上的标签:@SpringBootApplication

看了下@SpringBootApplication源码,其中@ComponentScan就是扫描注解,默认是扫描当前类下的package。将@Controller/@Service/@Component/@Repository等注解加载到IOC容器中。

但是我们使用的mybatis-genarator自动生成的Mapper和mapper.xml,是没有用@Repository标签,我们使用的mapperLocations的方式指定包加载进来的,所以说新加的文件夹是里面的mapper文件是不会自动加入到IOC容器的。

2.2 问题解决

在启动类上新增标签@MapperScan("com.laowang.newmapper")或者使用mapperLocations,将新的mapper文件夹加入进来就会自动扫描到IOC中了。



springboot不加载mapper文件问题解析

原文地址:https://www.cnblogs.com/ruanjianlaowang/p/11182693.html

时间: 2024-07-31 14:57:36

springboot不加载mapper文件问题解析的相关文章

springboot 不加载yaml文件的问题

初学Spring Boot, 遇到 配置文件位置对了 ,就是不加载. 看官方文档,说要加入SnakeYaml依赖.于是搜索,加入. 发现还是不行.又继续加.行了,原来我加错了. 上面那个是spring boot官方父项目里配的,居然不行. 下面那个居然是可以的,醉了.

代码收藏系列--php--加载sql文件并解析成数组

php加载sql文件,解析成以分号分割的数组.(支持存储过程和函数提取,自动过滤注释) /** * 加载sql文件为分号分割的数组 * <br />支持存储过程和函数提取,自动过滤注释 * <br />例如: var_export(load_sql_file('mysql_routing_example/fn_cdr_parse_accountcode.sql')); * @param string $path 文件路径 * @return boolean|array * @sin

SSM+MySQL开发架构中SQL mapper文件的解析和审计

SSM+MySQL已是Java开发的主流架构.在SSM+MySQL架构中,SQL一般写在mapper映射文件中,对于mapper文件的审计一直是个头疼的问题,测试人员很难覆盖mapper文件中动态SQL的所有情况,开发人员更是无法罗列每一个select id对应的所有SQL.在和开发同时沟通后,觉得自己可以写一个小工具来解决这一痛点!笔者作为一名DBA,自学了golang,经过七个月的努力初步完成了myaudit这一款实用性极强的SQLAudit小工具的开发,欢迎使用和吐槽,项目地址:https

springboot不加载bootstrap.properties文件

1.首先说一下官网对bootstrap和application两种配置文件的区别: Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton.bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性.这两个上下文共用一个环境,它是任何Spri

java加载XML文件并解析xml

import java.io.File; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Test { /** * @param args */ public static void main(String[] args) { // T

NHibernate动态加载资源文件

最近做项目,又用到了以前做过的ORM框架--NHibernate. 此次想要实现的目标: 1.简单SQL用NHibernate的Session的CRUD方法实现 2.复杂SQL用Native SQL实现 3.数据库可能有多个,且有可能是不同的数据库类型,如A系统用Oracle,B系统用MSSQL (第一点很简单,可以参照其他博客:本节主要记录第二点第三点,关于如何配置多数据库下次记录) 复杂SQL的实现,且针对不同数据库,那么需要加载不同的资源文件. 关于资源文件,请参考http://blog.

mybatis学习之路(三)别名(typeAliases)mapper接口加载映射文件

一.mybatis默认支持别名 别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _float float _boolean boolean string String byte Byte long Long short Short int Integer integer Integer double Double float Float boolean Boolean date Da

mybatis 详解(六)------通过mapper接口加载映射文件

通过 mapper 接口加载映射文件,这对于后面 ssm三大框架 的整合是非常重要的.那么什么是通过 mapper 接口加载映射文件呢? 我们首先看以前的做法,在全局配置文件 mybatis-configuration.xml 通过 <mappers> 标签来加载映射文件,那么如果我们项目足够大,有很多映射文件呢,难道我们每一个映射文件都这样加载吗,这样肯定是不行的,那么我们就需要使用 mapper 接口来加载映射文件 以前的做法: 改进做法:使用 mapper 接口来加载映射文件 1.定义

六、通过mapper接口加载映射文件

通过 mapper 接口加载映射文件,这对于后面 ssm三大框架 的整合是非常重要的.那么什么是通过 mapper 接口加载映射文件呢? 我们首先看以前的做法,在全局配置文件 mybatis-configuration.xml 通过 <mappers> 标签来加载映射文件,那么如果我们项目足够大,有很多映射文件呢,难道我们每一个映射文件都这样加载吗,这样肯定是不行的,那么我们就需要使用 mapper 接口来加载映射文件 以前的做法: 改进做法:使用 mapper 接口来加载映射文件 回到顶部