1、src不是classpath, WEB-INF/classes,lib才是classpath,WEB-INF/ 是資源目錄, 客戶(hù)端不能直接訪問(wèn)。
2、WEB-INF/classes目錄存放src目錄java文件編譯之后的class文件,xml、properties等資源配置文件,這是一個(gè)定位資源的入口。
3、引用classpath路徑下的文件,只需在文件名前加classpath:
<param-value>classpath:applicationContext-*.xml</param-value> <!-- 引用其子目錄下的文件,如 --> <param-value>classpath:context/conf/controller.xml</param-value>
4、lib和classes同屬classpath,兩者的訪問(wèn)優(yōu)先級(jí)為: lib>classes。
5、classpath 和 classpath* 區(qū)別:
classpath:只會(huì)到你的class路徑中查找找文件;
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進(jìn)行查找。
錯(cuò)誤實(shí)例:
在Spring和MyBitis繼承的時(shí)候,配置mapperLocations.一開(kāi)始配置是這樣的.
需要加載路徑為com/zhuangi01/mapper和com/zhuangzi02/mapper下的所有mapper文件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="mapperLocations" value="classpath:com/*/mapper/*Mapper.xml;" /> </bean>
結(jié)果一直報(bào)com/zhuangzi02/mapper下的mapper文件的某個(gè)方法找不到.
修改成這樣就可以找到了.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="mapperLocations" value="classpath*:com/*/mapper/*Mapper.xml;" /> </bean>
原因是classpath:和classpath*:在spring加載資源的時(shí)候是不同的.
classpath:只能加載找到的第一個(gè)資源文件.(上面只匹配了com/zhuangzi01/mapper/下的mapper文件,而com/zhuangzi02/mapper就忽略了)
classpath*:能加載多個(gè)路徑下的資源文件.(com/zhuangzi01/mapper和com/zhuangzi02/mapper都被加載進(jìn)來(lái)了.)