実現したいこと
添付ソースを下記①、②のように修正する場合、
SpringBatchConfigクラスの修正内容(できればサンプル)
SampleStepクラスの作成方法(できればサンプル)
を教えていただけますでしょうか。
※特にjobからstepの参照が難しいです。
①SpringBatchConfigクラスにはpublic Job job(Step step1)メソッドのみ残す。
②下記メソッドはSampleStepクラスを新規作成し、そのクラスに移動する。
・reader() メソッド
・processor()メソッド
・writer()メソッド
・step1(ItemReader<String> reader, ItemProcessor<String, String> processor, ItemWriter<String> writer) メソッド
発生している問題・分からないこと
SpringBatchConfigクラスでjob、step、reader() 、processor()、writer()を纏めて記載しているが、別クラスへの分け方がわかりません。
該当のソースコード
java
1import java.util.Arrays; 2import java.util.List; 3 4import org.springframework.batch.core.Job; 5import org.springframework.batch.core.Step; 6import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; 7import org.springframework.batch.core.job.builder.JobBuilder; 8import org.springframework.batch.core.launch.JobLauncher; 9import org.springframework.batch.core.repository.JobRepository; 10import org.springframework.batch.core.step.builder.StepBuilder; 11import org.springframework.batch.item.ItemProcessor; 12import org.springframework.batch.item.ItemReader; 13import org.springframework.batch.item.ItemWriter; 14import org.springframework.context.annotation.Bean; 15import org.springframework.context.annotation.Configuration; 16import org.springframework.transaction.PlatformTransactionManager; 17 18@Configuration 19@EnableBatchProcessing 20public class SpringBatchConfig { 21 22 private final JobLauncher jobLaunchrer; 23 private final JobRepository jobRepository; 24 private final PlatformTransactionManager transactionManager; 25 26 27 public SpringBatchConfig(JobLauncher jobLaunchrer, JobRepository jobRepository, 28 PlatformTransactionManager transactionManager) { 29 super(); 30 this.jobLaunchrer = jobLaunchrer; 31 this.jobRepository = jobRepository; 32 this.transactionManager = transactionManager; 33 } 34 35 @Bean 36 public ItemReader<String> reader() { 37 return new ItemReader<>() { 38 private final List<String> data = Arrays.asList("John", "Jane", "Foo", "Bar"); 39 private int index = 0; 40 41 @Override 42 public String read() { 43 if (index < data.size()) { 44 return data.get(index++); 45 } else { 46 return null; // nullを返すと処理が終了 47 } 48 } 49 }; 50 } 51 52 @Bean 53 public ItemProcessor<String, String> processor() { 54 return item -> "Proccss = , " + item + "!"; 55 } 56 57 @Bean 58 public ItemWriter<String> writer() { 59 return items -> items.forEach(System.out::println); 60 } 61 62 @Bean 63 public Step step1(ItemReader<String> reader, ItemProcessor<String, String> processor, ItemWriter<String> writer) { 64 return new StepBuilder("step1", jobRepository) 65 .<String, String>chunk(1, transactionManager) 66 .reader(reader) 67 .processor(processor) 68 .writer(writer) 69 .build(); 70 } 71 72 // Jobの定義 73 @Bean 74 public Job job(Step step1) { 75 System.out.println("SpringBatchConfig Job"); 76 77 return new JobBuilder("helloJob", jobRepository) 78 .start(step1) 79 .build(); 80 } 81} 82
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
SampleStepクラスを作成、implements Stepしましたが、移植方法が全然わかりませんでした。
補足
特になし

回答1件
あなたの回答
tips
プレビュー