java - Spring Batch 中 map 的项目阅读器?

标签 java spring spring-batch

我有一个简单的 HashMap,似乎无法将它从 Spring Batch 传递给任何标准 ItemReader,这让我感到非常沮丧。我是否必须编写自己的 Item Reader 才能处理 HashMap 还是有什么我遗漏的?

最佳答案

这取决于您的项目是什么: map 的键、值或条目。

您可以使用ListItemReader并在其构造函数中将键、值或条目作为列表传递。例如:

Map<Integer, String> items = new HashMap<>();
items.put(1, "foo");
items.put(2, "bar");

ListItemReader<Integer> keysItemReader = new ListItemReader<>(new ArrayList<>(items.keySet()));
ListItemReader<String> valuesItemReader = new ListItemReader<>(new ArrayList<>(items.values()));
ListItemReader<Map.Entry<Integer, String>> entriesItemReader = new ListItemReader<>(new ArrayList<>(items.entrySet()));

您还可以使用 IteratorItemReader 并在构造函数中将项目上的迭代器传递给它:

IteratorItemReader<Map.Entry<Integer, String>> iteratorItemReader = new IteratorItemReader<>(items.entrySet().iterator());
// same for keys or values

关于java - Spring Batch 中 map 的项目阅读器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973728/

相关文章:

java - 与展望整合

java - 从 eclipse 插件项目运行 program.exe

Spring Cache Abstraction VS接口(interface)VS关键参数("Null key returned for cache operation"错误)

java - hibernate 中的分页

spring - factory.NoSuchBeanDefinitionException : No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available

java - 在其父 shell 的中心生成 swt shell

java - 如何通过 LDAP 将 userWorkstation 传递到 Active Directory 进行登录?

java - Spring MVC 在 POST 上不支持内容类型 'application/json'

spring-boot - Spring Boot + 批处理 : Injected/Autowired beans are null in ItemReader

grails - Grails Spring Batch-来自记录格式的CRUD模式(如何实现Delete)