在spring配置mybatis的时候需要加载mybatis的多个相关配置文件,其中mybatis的mapper对应的xml通常放在其他的jar包中,mybatis-conf文件通常在当前工程中,so,也就引出了今天遇到的问题,那么classpath* 和 classpath到底有啥区别呢?
从上面的异常可以看出来,文件很明显是找不到的,但是这是为啥呢?
从异常中可以看出来,spring查找的路径是:
然而这个路径根本不是我们想要的路径,显然是找错了地方。
但是我们配置文件给出的路径是:``` classpath*:/spring/mybatis-config.xml
我们将配置文件中下面的配置稍作修改,去掉classpath后面的 *
<property name="configLocation" value="classpath*:/spring/mybatis-config.xml"></property>
改为:
<property name="configLocation" value="classpath:/spring/mybatis-config.xml"></property>
之后,启动正常,没有报错,问题解决。到这里可能有的同学会说为啥 <property name="mapperLocations" value="classpath*:/mappings/*.xml"/>
可以用classpath*
呢?原因请看下面
classpath*
它会搜索所有的 classpath,找到所有符合条件的文件,包括当前项目依赖的jar文件中的配置文件。而classpath
不会到当前项目依赖的jar文件中去寻找。<property name="mapperLocations" value="classpath*:/mappings/*.xml"/>
中的value="classpath*:/mappings/*.xml"
路径是当前项目依赖的jar包中的路径。楼主造了一个轮子,LIGHTCONF 是一个基于Netty实现的一个配置管理平台,其核心设计目标是“为业务提供统一的配置管理服务”,可以做到开箱即用。
作 者:haifeiWu
原文链接:https://cloud.tencent.com/developer/article/1333318
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。