classpath和classpath*的区别

问题:新建Dynamic Web Project时修改了default output folder,这时候在web.xml中配置DispatcherServlet的时候,如果使用

classpath:springmvc.xml

,系统启动时将提示springmvc.xml文件找不到的错误,当配置成

classpath*:springmvc.xml

时,能找到springmvc.xml文件。原因是:

概念解释:

classpath : 即项目中WEB-INF下面的classes目录;

应用:

【01】 src路径下的文件在编译后会放到WEB-INF/classes路径下。默认的classpath是在这里。直接放到WEB-INF下的话,是不在classpath下的。用ClassPathXmlApplicationContext当然获取不到的。

【02】 如果单元测试的话,可以在启动或者运行的选项里指定classpath的路径的。用maven构建项目时候resource目录就是默认的classpath

【03】 classPath即为java文件编译之后的class文件的编译目录一般为web-inf/classes,src下的xml在编译时也会复制到classPath下
(1)ApplicationContext ctx = new ClassPathXmlApplicationContext("xxxx.xml"); //读取classPath下的spring.xml配置文件
(2)ApplicationContext ctx = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/xxxx.xml"); //读取WEB-INF 下的spring.xml文件

区别:

classpath 和 classpath* 区别:
  classpath:只会到你的class路径中查找找文件;
  classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.

你可能感兴趣的:(classpath和classpath*的区别)