使用Servlet上下文从Spring Boot应用程序获取资源的路径

时间:2018-12-29 17:01:39

标签: java spring-mvc spring-boot classpath

我有这种结构,由Spring Boot生成

enter image description here

所以我想使用sevletContext获取gastos.xlsx文件的输入流。

    @Autowired
    private ServletContext context;

    @GetMapping("/grafico")
    public ResponseEntity<String> exportExcelGrafico(HttpServletResponse response){

        try{
               //this path returns null. What is the real path to put here? 
             InputStream input = context.getResourceAsStream("src/main/resources/templates/gastos.xlsx");
             //returns null
             input = context.getResourceAsStream("/resources/templates/gastos.xlsx");
             // Returns null
             input = context.getResourceAsStream("/templates/gastos.xlsx");
        }
        catch(){

        }

正确的道路是什么? 我没有在application.properties

上进行任何配置

1 个答案:

答案 0 :(得分:1)

Maven或Gradle项目的src/main/resources文件夹中的内容最终出现在jar中,而不是Web资源中。因此,应该使用类加载器而不是servlet上下文来加载它:

MyClass.class.getResourceAsStream("/templates/gastos.xlsx")

不确定为什么将文件放在模板下,因为...这不是模板。