是的,即使不使用@stepscope
,读取器也会读取下一个块,而不会再次重读相同的块。
为了使用作业/步骤执行上下文中的属性的后期绑定,实际上需要作用域步骤
。更多详细信息如下:https://docs.spring.io/spring-batch/4.0.x/reference/html/step.html#late-binding
因此,如果您的读取器不需要从作业/步骤执行上下文中访问作业参数或属性,它就不需要对步骤范围进行限定,并且仍然会逐块读取数据。总之,步骤范围与面向组块的处理没有关系。
我有一个定制的作家,它很好用;但是,我想通过JobParameters来设置我的输出文件的名称,而不是在我的配置中使用固定的字符串。为了做到这一点,我添加了@stepscope注释和参数,就像我对ItemReader所做的那样。 ItemWriter声明 步骤声明 这段代码不起作用,我得到一个WriterNotOpenException是因为我使用FlatFileItemWriter作为委托。 当
我有一个作业步骤,从数据库读取并将输出写入平面文件,然后创建一个报告。 如果该步骤失败,我希望它重新启动,从头开始处理。我不想将任何恢复合并到这一步中。 实现Spring Batch的最佳方式是什么,这样该tasklet就不会在过程中执行任何块处理并触发恢复?
我正在使用Spring Batch Admin从我的主项目的批处理模块中启动批处理。 在Spring batch Admin项目的依赖项中,将批处理模块编译为JAR addedstrong文本,如下所示: 因为我在一个reader类上添加了“@stepscope”,所以在部署Spring Batch Admin时,我会遇到以下错误 但是我没有找到如何使用类似的声明来防止Spring Batch A
在Spring Batch用于配置步骤的留档上,清晰的图片描述了如何执行读取和写入过程。 对应(根据文档): 但是,当我调试并在读取器的read方法中放置一个断点以及在处理器的process方法中放置一个断点时,我看到了以下行为: 那么文档有错吗?还是我遗漏了一些配置,使它的行为像文档一样(没有找到任何东西)。 我遇到的问题是,现在每个consequentive读取都取决于处理器的状态。读取器是并
Spring Batch最通用的实现方式是使用“面向块”的处理风格。面向块处理是指在一个事务范围内,一次性读取数据,创建被输出的“块”。ItemReader读取一条项目,通过ItemProcessor处理,并整合。当处理完所有项目后,整个块将由ItemWriter输出,然后提交该事务。 下面一段代码展示上面提示的内容: List items = new Arraylist(); for(int i
我正在使用Spring批处理设置一个作业服务器。我的JdbcCursorItemReader需要配置sql,该sql在每个作业运行的基础上进行更改。因为sql发生了变化,所以我希望阅读器具有@stepscope,这样我就不需要担心sql的状态性了。 所以我设置了这样一个类: 我在整个服务器上使用基于Java的配置。ItemReader的一个实例的bean如下所示: 启动服务器并运行Spring批处