暂时还不明白究竟是maven的原因还是spring的原因,先留个坑,回头来看。
重点应该还是理解classpath,就目前所看到的,spring读取的classpath应该是编译后WEB-INF/classes/目录,改目录下最后形成的样子差不多是这样
对于maven工程而言,src/main/java和src/main/resources编译后都会以该目录为根目录,spring读取该目录下的配置文件的时候不是用的常规的java.io去读取,需要用spring自带的上下文去读取,比如以下代码:
ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
spring以该目录为classpath根目录,读取该目录下的文件可以直接写文件名。
而java.io方法读取文件的时候是以项目的根目录来读取的,两者并不一样。
所以在applicationContext.xml中引用你放置在src/main/resources目录下的配置文件的时候,只需要直接写文件名即可,而若是用java.io去读取时,需要从项目根目录读起,比如src/main/resources/db.properties。
当然如果使用了spring,一般是希望通过注入的方式来读取配置文件的,这里只是我绕了弯弯,记录一下。
另外,properties文件中写路径的时候不支持’\’,只支持’/’
比如‘D:/upload’就是对的,而‘D:\upload’就会报错