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

时间:2019-07-01 13:06:23

标签: spring-batch

我遵循了Spring Batch docs的用法,它足够简单和平庸,但是仍然不知道如何应用相同的技术从外部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();
    }

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

1 个答案:

答案 0 :(得分:2)

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();
}