1、src不是classpath, WEB-INF/classes,lib才是classpath,WEB-INF/ 是资源目录, 客户端不能直接访问。
2、WEB-INF/classes目录存放src目录java文件编译之后的class文件,xml、properties等资源配置文件,这是一个定位资源的入口。
3、引用classpath路径下的文件,只需在文件名前加classpath:
<param-value>classpath:applicationContext-*.xml</param-value> <!-- 引用其子目录下的文件,如 --> <param-value>classpath:context/conf/controller.xml</param-value>
4、lib和classes同属classpath,两者的访问优先级为: lib>classes。
5、classpath 和 classpath* 区别:
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。
错误实例:
在Spring和MyBitis继承的时候,配置mapperLocations.一开始配置是这样的.
需要加载路径为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>
结果一直报com/zhuangzi02/mapper下的mapper文件的某个方法找不到.
修改成这样就可以找到了.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="mapperLocations" value="classpath*:com/*/mapper/*Mapper.xml;" /> </bean>
原因是classpath:和classpath*:在spring加载资源的时候是不同的.
classpath:只能加载找到的第一个资源文件.(上面只匹配了com/zhuangzi01/mapper/下的mapper文件,而com/zhuangzi02/mapper就忽略了)
classpath*:能加载多个路径下的资源文件.(com/zhuangzi01/mapper和com/zhuangzi02/mapper都被加载进来了.)