问题来源
这是在部署国网系统的时候遇到的问题。国网内外网由于数据安全问题存在隔离网闸,在外网连接内网数据库的时候,需要通过隔离网闸去连接。
隔离网闸的接入倒是无感,只需要加载他们的jar包,然后更改数据连接地址就可以,问题出在它更改了连接协议,要把jdbc:mysql更改成xxx,然后mybatis里面没有提供该协议的连接,导致连接不上。
解决办法
把mybatis里面的JdbcUtils复制一份,再建一个相同的目录路径,更改该文件后把更改后的文件放在新建的目录下面
然后就能覆盖掉原来的类
基本原理
具体还是根据jvm的类加载机制,同一个类不会被重复加载,然后同一个类加载器之间存在类路径优先,会优先加载我们自己写的代码
另附一些比较好的类加载机制的介绍博文