问题:
Could not find resource com/xxx/xxx/StudentMapper.xml
原因:
没有导出xml文件,pom.xml文件配置有问题。也因为我的resource有多级的子目录,导致resource根目录的导出了,但是子目录下的都没有,其实就是没有匹配到子文件里面的xml文件。
原来的:
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
现在的:
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
完整的:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
这是一种编译打包resource下所有文件的方式。意思就是把所有 /src/main/java 中所有 xml 文件也打包进包中,当使用 mybatis 这种需要写 xml 的框架的时候会要用到
补充:
路径匹配原则(Path Matching)
Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了
org.springframework.util.AntPathMatcher
,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法(在下面的表格中列出)
Table Ant Wildcard Characters
Wildcard | Description |
---|---|
? | 匹配任何单字符 |
* | 匹配0或者任意数量的字符 |
** | 匹配0或者更多的目录 |
Table Example Ant-Style Path Patterns
Path | Description |
---|---|
/app/*.x | 匹配(Matches)所有在app路径下的.x文件 |
/app/p?ttern | 匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern |
/**/example | 匹配(Matches) /app/example, /app/foo/example, 和 /example |
/app/**/dir/file. | 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java |
/**/*.jsp | 匹配(Matches)任何的.jsp 文件 |