我正在开发一个Spring Boot应用程序。我需要在开始时解析XML文件(countries.xml)。问题是我不知道将其放在哪里才能访问它。我的文件夹结构是
ProjectDirectory/src/main/java ProjectDirectory/src/main/resources/countries.xml
我的第一个想法是将其放在src / main / resources中,但是当我尝试创建File(countries.xml)时,我得到了NPE,并且stacktrace显示我的文件在ProjectDirectory中查找(所以src / main / resources /未添加)。我尝试创建File(resources / countries.xml),路径看起来像ProjectDirectory / resources / countries.xml(因此再次未添加src / main)。
我尝试添加此没有结果
@Override public void addResourceHandlers(final ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); registry.setOrder(Ordered.HIGHEST_PRECEDENCE); super.addResourceHandlers(registry); }
我知道我可以手动添加src / main /,但是我想了解为什么它无法正常工作。我还尝试了使用ResourceLoader的示例-没有结果。
任何人都可以提出问题所在吗?
更新: 仅供以后参考-构建项目后,我在访问文件时遇到问题,因此我将File更改为InputStream
InputStream is = new ClassPathResource("countries.xml").getInputStream();
只需使用Spring类型的ClassPathResource即可。
File file = new ClassPathResource("countries.xml").getFile();
只要该文件在类路径中的某个位置,Spring就会找到它。这可以src/main/resources在开发和测试期间。在生产中,它可以是当前运行目录。
编辑: 如果文件位于胖JAR中,则此方法不起作用。在这种情况下,你需要使用: