Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有itemwriter的情况下编写spring批处理步骤_Spring_Spring Batch - Fatal编程技术网

如何在没有itemwriter的情况下编写spring批处理步骤

如何在没有itemwriter的情况下编写spring批处理步骤,spring,spring-batch,Spring,Spring Batch,我正在尝试使用下面的配置在没有项目编写器的情况下配置spring批处理步骤。然而,我得到错误的说,作家 元素既没有“writer”属性,也没有元素 我浏览了链接。但无法解决问题。 有人能告诉我在我提到的代码片段中要做的具体更改吗 <batch:job id="helloWorldJob"> <batch:step id="step1"> <batch:tasklet> <batch:

我正在尝试使用下面的配置在没有项目编写器的情况下配置spring批处理步骤。然而,我得到错误的说,作家 元素既没有“writer”属性,也没有元素

我浏览了链接。但无法解决问题。 有人能告诉我在我提到的代码片段中要做的具体更改吗

<batch:job id="helloWorldJob">
        <batch:step id="step1">
            <batch:tasklet>
                <batch:chunk reader="cvsFileItemReader"
                    commit-interval="10">
                </batch:chunk>
            </batch:tasklet>
        </batch:step>
    </batch:job>

    <bean id="cvsFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">

        <property name="resource" value="classpath:cvs/input/report.csv" />

        <property name="lineMapper">
            <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
                <property name="lineTokenizer">
                    <bean
                        class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                        <property name="names" value="id,sales,qty,staffName,date" />
                    </bean>
                </property>
                <property name="fieldSetMapper">
                    <bean class="com.mkyong.ReportFieldSetMapper" />

                    <!-- if no data type conversion, use BeanWrapperFieldSetMapper to map by name
                    <bean
                        class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
                        <property name="prototypeBeanName" value="report" />
                    </bean>
                     -->
                </property>
            </bean>
        </property>

    </bean>

基于区块的步骤读取器和写入器是必需的。
如果您不想要编写器,请使用不执行任何操作的ItemWriter

编辑:
无操作实现是接口的空实现,它什么都不做
只需让您的类使用空方法实现需要的接口即可。

无op ItemWriter:

public class NoOpItemWriter implements ItemWriter {
  void write(java.util.List<? extends T> items) throws java.lang.Exception {
    // no-op
  }
}
公共类NoOpItemWriter实现ItemWriter{

空写(java.util.List我希望你们能得到答案,但我想向其他读者解释一下,当我们使用chunk时,通常会声明reader、processor和writer。在chunk中,reader和writer是必需的,processor是可选的。在你们的情况下,若你们不需要writer,那个么你们需要创建一个实现ItemWriter的类。重写write方法并保持现在创建writer类的bean并将其作为writer的引用传递

<batch:step id="recordProcessingStep" >
        <batch:tasklet>
            <batch:chunk reader="fileReader" processor="recordProcessor"
                writer="rocordWriter" commit-interval="1" />
        </batch:tasklet>
    </batch:step>

你的写作课看起来像

public class RecordWriter<T> implements ItemWriter<T> {
@Override
public void write(List<? extends T> items) throws Exception {
    // TODO Auto-generated method stub

}
公共类RecordWriter实现ItemWriter{
@凌驾
public void write(列表在中可以找到框架“spring批处理示例”。
在该框架中,您将发现以下作者:

org.springframework.batch.sample.support.DummyItemWriter

您能告诉我如何在上面的示例中配置无操作itemwriter吗?我是初学者,因此需要一些基本帮助。提前谢谢。非常感谢。在您发布NoOpItemWriter之前实现了此实现。或者更确切地说,在我发布问题之后实现了此实现。无论如何,谢谢:)@Luca Basso Ricci-由于我们需要为处理器指定输入和输出类型,也需要为编写器指定输入类型,因此处理器在这里返回
null
是否足够?此外,因为这里没有写入任何内容,所以指定块大小是否尽可能高?关于块大小/提交间隔值的任何建议?希望在这段时间内添加这一点Works for itemwriter,它不适用于itemreader。反过来需要一个tasklet。本文中的详细信息:为什么您希望基于块的读取,但在这之后放弃所有内容?为什么您只读取而不写入任何内容?对于基于块的处理,读写器是必需的,只有处理器是可选的,这使得读而不写是没有意义的…tasklet怎么不适合你?我在tasklet中调用一个过程,它工作得很好。如果你不需要(为什么需要)基于块的读取,为什么不是一个简单的tasklet呢?这个编写器只是用于测试或演示目的,而不是用于生产代码,因为它调用
Thread.sleep(500);