問題:
用Maven搭建spring、springmvc、mybatis時,運行報錯:
org.springframework.beans.factory.BeanDefinitionStoreException: Could not resolve bean definition resource pattern
[classpath:spring/applicationContext-*.xml]; nested exception is java.io.FileNotFoundException: class path resource [spring/] cannot be resolved to URL because it does not exist
意思是說:
無法找到applicationContext-*.xml這個配置文件,因為這些文件不存在
原因:
在我的工程中,src/main/java下的mapper包中有mapper.java和mapper.xml文件,src/main/config目錄有spring,mybatis,springmvc的配置文件
這兩個路徑下最終對應maven的運行路徑時:
我們知道,maven在掃描java文件夾時,不會掃描其中的.xml文件,因為它默認是掃描java文件的,這樣mapper.xml就會丟失而導致報錯,所以我們會在pom文件中添加這樣的配置:
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resources> </build>
上述配置的意思是:maven掃描src/main/java這個文件夾,並且要掃描所有.xml和.properties文件,這樣一來可以解決maven掃描mapper.xml缺失的問題,但是由於修改了默認的resource目錄,導致src/main/resources的所有文件都不能被掃描,也就出現了applicationContext文件不能被掃描的錯誤,所以應該配置兩個:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
由於修改了默認的resource目錄,導致src/main/resources的所有文件都不能被掃描,因此還要配多一個
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
轉自:https://blog.csdn.net/jeffleo/article/details/55271858