在Spring Boot应用程序中处理json文件的最佳方法是什么?

问题描述 投票:0回答:1

我有3个json文件,它们的总大小为150mb,其中包含一些数据。在本地,我将其存储在资源文件夹中,并在应用程序启动后进行读取,如果该集合不存在,则写入mongodb。

[将其部署到云中时,我看到的是null,因为文件已移到jar中的BOOT-INF / classs中。我需要以下查询的建议。

  1. 如何编写支持文件读取本地运行与云运行的通用方法?当我在云中运行时遇到问题吗?我尝试如下
@Bean
    @Profile("cloud")
    public Resource[] getCloudResources() throws IOException {
        Resource[] resources = applicationContext.getResources("classpath*:*.json");
        return resources;
    }

    @Bean
    @Profile("!cloud")
    public Resource[] getNonCloudResources() throws IOException {
        Resource[] resources = applicationContext.getResources("*.json");
        return resources;
    }
  1. 似乎不是将这些文件存储在资源文件夹中的最佳实践。根据12个因素标准,替代方法是什么?我正在PCF中部署]
  2. 如果遇到类似的用例,请提出其他建议。
java spring-boot filereader pivotal-cloud-foundry pcf
1个回答
0
投票
  1. 一种通用方法是接受InputStream参数并从中读取文件的方法。如果文件在类路径中,则可以使用getResourceAsStreamhere)获得InputStream。如果没有,您可以使用将InputStream返回到存储在云中的资源的相应云API的方法。
  2. 是的,这是正确的。文件不应成为应用程序工件的一部分。应用程序应将文件路径作为可配置属性(在application.properties中用于春季启动)并从中读取文件。
  3. [让应用在启动时读取文件是个好主意。尽管它增加了启动延迟,但应该很好,因为除非应用程序已加载数据,否则您不希望它满足请求。
  4. 关于从文件读取json对象,您可以看一下Jackson库。 Here是文档,here是示例。
© www.soinside.com 2019 - 2024. All rights reserved.