今天在工作的时候遇到了一个很棘手的问题,从网上找解决办法,搞来搞去都是解决了一个问题又来一个问题。总结了一下
1、出现问题的时候一定要追根,问题的根源找到了才能更好的解决问题。今天出现的情况是刚创建的SpringBoot项目启动的时候说数据库的url找不到,网上给出的办法就是加注解,进行自动注入,但其实版本就有这个功能,最后追查到底,发现是自己配置是从别的不熟悉的项目里拿过来的,少了一层,自然要报错
下面是让我头脑瞬间清醒的帖子内容,转载了别人的内容(我会在下面附上链接,抄一遍内容是防止贴主整理时咱们就看不了内容了):
SpringBoot+MyBatis整合中的坑以及Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required错误详解
坑一:在Mapper层,它是需要加@Mapper注解的,但是网上又有人加@respository,两个注解混起来了,其实是任选其一都可以的。一般都是使用@Mapper。但是如果在Mapper层中加了注解,在配置主类SpringBootMybatisApplication里面就不需要@MapperScan(“com.example.demo.mapper”)扫描注解,在配置类里加扫描注解的意思是将这个包下所有的都注解成Mapper。
坑二:使用STS创建的SpringBoot项目,其中配置文件默认的是application.properties,一般在这个文件里面配置数据源。但是这个文件想要起作用,则必须在配置主类中加入@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})自动注入,否则该配置文件中的配置无效。会报出Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.错误
但是此时如果加了这个注解,由于Mybatis的依赖中的jar包,
< dependency>
< groupId>org.mybatis.spring.boot< /groupId>
< artifactId>mybatis-spring-boot-starter< /artifactId>
< version>1.3.2</ version>
< /dependency>
mybatis-spring-1.3.2中取消了自动注入SqlSessionFactory 和 SqlSessionTemplate,所以会报出Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required错误。
那得想解决办法啊,于是网上搜解决办法,参考此文, 创建了一个基类,然后让自己的dao去继承。https://www.cnblogs.com/hawk0035/p/3337283.html?utm_source=tuicool
但是我的Mapper层是使用了注解版Mybatis,是一个接口,不能继承类。所以这个办法就不能用了。
既然mybatis-spring-1.3.2中取消了自动注入,那我就换成低版本的mybatis-spring-1.1.1,但是事实还是一样,没有任何改变。中途由于maven仓库换mybatis-spring版本,我以为是相关JAR包没下载完成,所以又把jar包删了重新下,又浪费了很多时间。。。
那就想办法不要@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})自动注入,所以必须把application.properties配置文件改为application.yml。问题终于解决了。
坑三:由于我配置文件中加了Mongodb的依赖,导致运行的时候还报了错。删除之后就OK了。
————————————————
版权声明:本文为CSDN博主「qq8693」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
人家原版主的声明,下面附个链接「qq8693」的原创文章