我遵循了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数据?我应该传递什么样的资源?谢谢。
答案 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();
}