Spring MVC配置多个数据源可能遇到的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC配置多个数据源可能遇到的坑相关的知识,希望对你有一定的参考价值。

参考技术A 由于业务需要连接多个数据源,在进行配置的过程中遇到了一些坑,在此做一下记录和分享。
jdbc.properties文件中多个数据源的基本信息:

在applicationContext.xml文件中对数据源进行配置:

在applicationContext.xml文件中配置mybatisSqlSessionFactoryBean:

在applicationContext.xml文件中配置SqlSessionTemplate:

在applicationContext.xml文件中配置mybatis mapper接口,扫描所有dao:

如果是按照以上的配置的,应该是可以成功的。

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误
具体报错信息:

可以看出有2个会发生该异常的情况:
mappedStatements为 (跟踪debug发现,我出现这里为空)
containsKey(statementName),没有找到
mappedStatements为空的原因是由于在spring容器启动时,会解析spring配置文件,这时将去加载资源文件,解析并以key,value的形式缓存在mappedStatements中。而在实际情况下,发现打包时*Mapper.xml并没有自动复制到class输出目录的mapper类包下。从而导致mappedStatements为空。

Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上。
按以下步骤一一执行:
1、检查xml文件所在的package名称是否和interface对应的package名称一一对应
2、检查xml文件的namespace是否和xml文件的package名称一一对应
3、检查函数名称能否对应上
4、去掉xml文件中的中文注释
5、随意在xml文件中加一个空格或者空行然后保存
6、路径问题

在使用IDEA开发时,如果打包时*Mapper.xml没有自动复制到class输出目录的mapper类包下,则需要在pom文件中添加mybatis加载配置文件的配置!
如下:

通过在pom文件中添加mybatis加载配置文件,完美解决遇到的问题了。

spring实战第五版遇到的坑第14章spring.cloud.config.uri和token无效

本文使用的Spring Boot版本为:2.1.4.RELEASE Spring Cloud版本为:Greenwich.SR1

按照书上的做法,在application.yml中配置配置服务器的地址和Vault token相关的配置时,在启动的时候发现这两个配置没有生效,使用的还是默认的配置服务器的地址:http://localhost:8080, token也是空的。

解决办法,在类路径下新建bootstrap.yml或者bootstrap.properties文件,也就是在项目的src/main/resources/目录下加入如下的配置:

spring:
  cloud:
    config:
      uri: http://192.168.1.125:8888
      token: roottoken

重启服务器后,发现问题成功解决!!!

以上是关于Spring MVC配置多个数据源可能遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL数据库修改行外存储(TOAST)可能遇到的坑

PostgreSQL数据库修改行外存储(TOAST)可能遇到的坑

spring实战第五版遇到的坑第14章spring.cloud.config.uri和token无效

Spring循环依赖,竟然有这样不可思议的坑!

Struts2开发中遇到的坑。。。

这个 Spring 循环依赖的坑,90% 的人都不知道!