记录一次SpringBoot Error creating bean with name 'xxxx' - Go语言中文社区

记录一次SpringBoot Error creating bean with name 'xxxx'


记录一次SpringBoot Error creating bean with name ‘xxxx’

用idea创建springboot项目后,在不注入service层的情况下,可以正常的启动工程以及访问controller的url请求,之后想整合Springboot-mybatis,查阅相关文档后,有博客介绍说可以在Springboot的全局配置文件里配置mybatis的mapper.xml的扫描路径,然后在mapper.xml指定Dao。现在pom里添加mybatis的依赖,如下:

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.0</version>
    </dependecy>

工程目录结构如下图:
这里写图片描述

BootApplication是入口类,Springboot遵循习惯大于配置的设计模式,默认的ComponentScan-basepakge是该入口类所在包以及其所在包的所有子包,上图的这个结构也是springboot官方推荐的结构,当然也可以通过@ComponentScan的自定义需要扫描的包。
全局配置文件如下:
这里写图片描述

各层级代码如下
dao层:
这里写图片描述
service层:
这里写图片描述
controller层:
这里写图片描述
原本以为神通广大的springboot配置到这里就可以启动了,各种依赖配置都会自动到位,mybatis通过mapper.xml会找到dao以及相关的entity,但是too young,启动后发现报了error creating bean with name‘userService’的错,具体的信息是userDao不是一个有效的Mapper,然后就开始了排错之旅:
1.首先错误指向Dao层就说明那就意味着mybatis没有扫描到dao,这其实是个低级错误,参考ssm框架的配置就会发现
2.随后在controller层注释掉了service的注入,去掉了service的注解,然后启动工程,报了sqlsessionFactory初始化失败的错。
问题到这就比较清晰了,在springboot的pom里添加了mybatis的依赖之后,sqlSessionFactory的初始化,以及mybatis的mapper接口等的配置springboot是没有进行管理的。必须参考ssm框架的配置来手动完成。
首先,我们需要一个Mybatis的基础配置类MybatisConfig。同时可以实现TransactionManagementConfigurer这个接口,重写annotationDrivenTransactionManager这个方法来处理事务。MybatisConfig这个类主要完成三件事:
1.初始化dataSource。在Springboot中,通过@PropertySource注入数据库相关的property文件,然后用@Value注解将其中的值注入到相应的属性当中,如下图:
这里写图片描述

2.初始化sqlSessionFactory。这一步需要完成dataSource的装配以及mapper.xml的扫描,entity层的扫描可以不写,也可以在全局配置文件里指定。如下图:
这里写图片描述
3.sqlSession的模板代理-SqlSessionTemplate的创建,将sqlSessionFactory注入到SqlSessionTemplate的构造方法中即可。
其次还需要配置Mybatis扫描dao层,在ssm里面我们通过装配MapperScannerConfigurer的basePackage属性来映射dao,boot里面同样如此。创建MapperScannerConfigurer类,注入basepackage和sqlSessionFactoryBean的值即可,如下图:
这里写图片描述
需要注意的是@AutoConfigureAfter(MybatisConfig.class)这个注解,旨在MybatsiConfig初始化后才加载本类,否则SpringBean工厂没有拿到sqlSessionFactory的实例,MapperScannerConfigurer会无法加载sqlSessionFactory。
至此,问题解决。以上是初学者个人愚见,有不对的地方还清指正,也欢迎大家留言交流。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_28708473/article/details/77989489
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-28 02:57:27
  • 阅读 ( 887 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢