标签: spring-batch

Spring Batch 自定义 ItemReader 无法打开

我有一个 Spring Batch 项目,其中有一个从 Web 服务异步检索数据的JsonResouurceAsyncPagingItemReader自定义项目。ItemReader

此自定义ItemReader使用 aExecutorService来提交对 Web 服务的调用。但是我在初始化它时遇到了麻烦。

我尝试通过doOpen提供的方法初始化它AbstractItemCountingItemStreamItemReader,但似乎doOpen没有被调用。

ItemReaderSpring 通过以下方式注入:

@Bean
@JobScope
public ItemReader<Map<String, Object>> reader(@Value("#{jobParameters['lastRun']}") Date lastRun,
        @Value("#{jobParameters['codInt']}") Long codInt) {

    Map<String, Object> parameterValues = new HashMap<String, Object>();
    if (lastRun != null) {
        parameterValues.put("lastRun", DateFormatUtils.format(lastRun, dateFormat));
    }
    if (codInt != null) {
        parameterValues.put("codInt", codInt);
    }

    JsonResourceAsyncPagingItemReader<Map<String, Object>> reader = new JsonResourceAsyncPagingItemReader<>();
    reader.setHttpUrl(server + pathTemplate);
    reader.setRestTemplate(restTemplate);
    reader.setParameterValues(parameterValues);
    reader.setPageSize(pageSize);

    return reader;
}
Run Code Online (Sandbox Code Playgroud)

并进一步用于Step …

java spring spring-batch

0
推荐指数
1
解决办法
1277
查看次数

Spring Batch - 一次写入 2 个表

我有一个包含地址列表的 Person 对象。我的 Spring Batch 应用程序将 Person JSON 记录转换为 Person POJO 并将它们写入数据库。

通常,我会使用 JdbcBatchItemWriter,但我发现它仅限于写入 2 个单独的表。我需要写入人员和地址表。

Hibernate 可以一步完成此操作,但我在 Spring Bathc 中没有看到类似的功能。

这个SO问题Multiple itemwriters in Spring Batch建议使用CompositeItemWriter,但问题是,我希望我的Address表包含一个名为Person_id的列,以将地址链接回Person。我无法通过两次写入来做到这一点。

有什么建议么?当然,Batch 可以满足更复杂的写入需求

java spring-batch writers

0
推荐指数
1
解决办法
4098
查看次数

如何在 Spring Batch 中读取带有注释 # 的行

I\xe2\x80\x99m 使用 \xe2\x80\x98FlatFileItemReader\xe2\x80\x99 来处理文件。我也想读带有 # 的行。目前,它只是跳过线路。

\n

spring-batch

0
推荐指数
1
解决办法
390
查看次数

Jpa 阅读器 Spring Batch

我想知道,是否建议使用这种方式来使用 jpa 实现读者 spring 批处理,或者是否最好寻找另一种解决方案,如果不建议使用这种方式,我在哪里可以找到有关更好选项的信息

public class CreditCardItemReader implements ItemReader<CreditCard> {

@Autowired
private CreditCardRepository respository;

private Iterator<CreditCard> usersIterator;

@BeforeStep
public void before(StepExecution stepExecution) {
    usersIterator = respository.someQuery().iterator();
}

@Override
public CreditCard read() {
    if (usersIterator != null && usersIterator.hasNext()) {
        return usersIterator.next();
    } else {
        return null;
    }
}
  }
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-batch

0
推荐指数
1
解决办法
7968
查看次数

多次运行弹簧批处理作业

我使用以下教程使用 spring boot 创建了一个 spring 批处理作业:

https://spring.io/guides/gs/batch-processing/
Run Code Online (Sandbox Code Playgroud)

该作业正在按预期读取文件并写入数据库。

但是,现在我有一个用例可以多次运行此作业。

我有一个ArrayList参数。

我应该对工作进行哪些更改,以便我可以运行工作的次数是我的ArrayList?

java spring spring-batch spring-boot

-1
推荐指数
1
解决办法
3688
查看次数

标签 统计

spring-batch ×5

java ×4

spring ×3

jpa ×1

spring-boot ×1

writers ×1