发出疑问的地方:
每次看到项目中各种配置的classpath,突然注意到别人之前都这样写,那我也这样写,现在突然不知道为什么要这样了?所以记录一下
出现场景:
mapper-locations: classpath:/mybatis/mapper/*.xml
config-location: classpath:/mybatis/config/mybatis-config.xml
详细解释:
classpath就是class的path,也就是类文件(*.class)的路径
我们创建的项目结构大致如下:
project
|--src
| |--main
| | |--java
| | |--resources
| | |--webapp
| | |--WEB-INF
| | |--views
| | |--web.xml
| |--test
| |--java
|--pom.xml
项目发布之后的结构:
project
|--META-INF
|--WEB-INF
|--classes
|--lib
|--views
|--web.xml
分析:
- 开发时期项目(即第1点下的目录结构),src/main/下的java和resources这两个文件夹都被编译打包到了WEB-INF/classes/目录下,
- 而原来的存在于WEB-INF下的views和web.xml则仍然存在于WEB-INF下。
- 而由maven引入的依赖包均放到了WEB-INF/lib/下。
- 所有编译后生成的class文件和资源文件都存放在classes目录下
总结:
classpath指的就是项目编译打包后的WEB-INF目录下的classes。
例子:
classpath*:**/mapper/mapping/*Mapper.xml
含义是:到WEB-INF/classes/目录下的任意层的目录寻找符合后面的文件路径,只要符合(无论多少个)都会被作为资源文件找到。