使用 servlet 上下文从 spring 引导应用程序获取资源的路径

Get the Path of a resource from a spring boot aplication using servlet context

我有这个结构,由spring boot

生成

所以我想使用 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

上配置任何东西

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

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

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