概念性问题

  1. classpath是什么:
        只知道把配置文件如:mybatis.xml、spring-web.xml、applicationContext.xml等放到src目录(就是存放代码.java文件的目录),而后使用“classpath:xxx.xml”来读取,都放到src目录准没错,那么到底classpath到底指的什么位置呢 ?
    1. src路径下的文件在编译后会放到WEB-INF/classes路径下吧。默认的classpath是在这里。直接放到WEB-INF下的话,是不在classpath下的。用ClassPathXmlApplicationContext固然获取不到。若是单元测试的话,能够在启动或者运行的选项里指定classpath的路径的。
    2. 用maven构建项目时候resource目录就是默认的classpath
              classPath即为java文件编译以后的class文件的编译目录通常为web-info/classes,src下的xml在编译时也会复制到classPath下
              ApplicationContext ctx = new ClassPathXmlApplicationContext("xxxx.xml");  //读取classPath下的spring.xml配置文件
              ApplicationContext ctx = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/xxxx.xml");   //读取WEB-INF 下的spring.xml文件。
  2. web.xml 配置中classpath: 与classpath*:的区别
    1. classpath:只会到你的class路径中查找找文件;
    2. classpath*:不只包含class路径,还包括jar文件中(class路径)进行查找.
  3. 用classpath*:须要遍历全部的classpath,因此加载速度是很慢的,所以,在规划的时候,应该尽量规划好资源文件所在的路径,尽可能避免使用 classpath*

    4.try-with-resources java