如何使用 spring-batch 和 JsonItemReaderBuilder 从外部 API 获取 JSON 数据

bel*_*ros 1 spring-batch

我遵循了Spring Batch 文档,该文档有效并且足够简单和平庸,但仍然无法弄清楚如何应用相同的技术从外部 API 获取 JSON 数据。据我了解,我必须使用JsonItemReaderBuilder并定义reader方法来返回实例,JsonItemReader如下所示:

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Bean
    public JsonItemReader<Person> reader() {
        return new JsonItemReaderBuilder<Person>()
                .name("personItemReader")
                .build();
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是如何替换.resource(new ClassPathResource("sample-data.csv"))上面示例中仅读取 CSV 文件的行?我想我必须传入 JSON 数据作为InputStream实例或类似的东西?我应该传入什么样的资源?谢谢。

Mah*_*ine 5

适用JsonItemReader于任何org.springframework.core.io.Resource实施。因此,就您的情况而言,您可以使用org.springframework.core.io.UrlResource. 这是一个简单的例子:

@Bean
public JsonItemReader<Person> reader() throws Exception {
    URL resource = new URL("http/url/to/file/persons.json");
    return new JsonItemReaderBuilder<Person>()
            .name("personItemReader")
            .resource(new UrlResource(resource))
            .jsonObjectReader(new JacksonJsonObjectReader<>(Person.class))
            .build();
}
Run Code Online (Sandbox Code Playgroud)