溫馨提示×

Springboot Batch結果輸出怎么弄

小樊
107
2024-09-25 02:29:19
欄目: 編程語言

在Spring Boot Batch應用中,將處理結果輸出到不同的渠道(例如:控制臺、文件、數據庫等)可以通過配置StepExecutionListenerItemWriter來實現。以下是一個簡單的示例,演示如何將結果輸出到控制臺和文件。

  1. 首先,創建一個實現ItemWriter接口的類,用于將處理結果寫入到文件中:
import org.springframework.batch.item.ItemWriter;
import org.springframework.stereotype.Component;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

@Component
public class FileItemWriter implements ItemWriter<String> {

    private String filePath;

    public FileItemWriter(String filePath) {
        this.filePath = filePath;
    }

    @Override
    public void write(List<? extends String> items) throws IOException {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath, true))) {
            for (String item : items) {
                writer.write(item);
                writer.newLine();
            }
        }
    }
}
  1. 創建一個實現StepExecutionListener接口的類,用于在步驟執行前后執行操作,并輸出處理結果到控制臺:
import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.StepExecutionListener;
import org.springframework.stereotype.Component;

@Component
public class ConsoleStepExecutionListener implements StepExecutionListener {

    @Override
    public ExitStatus afterStep(StepExecution stepExecution) {
        System.out.println("處理結果: " + stepExecution.getJobExecution().getJobParameters().getString("result"));
        return null;
    }

    @Override
    public void beforeStep(StepExecution stepExecution) {
    }
}
  1. 在你的JobConfiguration類中,配置Step,并將上面創建的FileItemWriterConsoleStepExecutionListener添加到Step中:
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;

@Configuration
public class JobConfiguration {

    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job job() {
        return jobBuilderFactory.get("job")
                .incrementer(new RunIdIncrementer())
                .start(step())
                .build();
    }

    @Bean
    public Step step() {
        return stepBuilderFactory.get("step")
                .<String, String>chunk(1)
                .reader(reader())
                .writer(fileItemWriter())
                .listener(consoleStepExecutionListener())
                .build();
    }

    // 配置你的Reader和其他組件
}

現在,當你運行你的Spring Boot Batch應用時,處理結果將被同時輸出到控制臺和指定的文件中。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女