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)可能遇到的坑