質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Spring Batch

Spring Batchは、バッチ処理向けに定義されたオープンソースのフレームワーク。エンタープライズシステムで避けて通れないバッチ処理を可能にします。設定ファイルに別定義することで効率よく開発することがで可能です。

Q&A

解決済

1回答

233閲覧

Spring batchのStepクラスの作成方法

totomore

総合スコア49

Spring Batch

Spring Batchは、バッチ処理向けに定義されたオープンソースのフレームワーク。エンタープライズシステムで避けて通れないバッチ処理を可能にします。設定ファイルに別定義することで効率よく開発することがで可能です。

0グッド

0クリップ

投稿2025/03/08 02:28

編集2025/03/08 02:39

実現したいこと

添付ソースを下記①、②のように修正する場合、
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しましたが、移植方法が全然わかりませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2025/03/12 03:59

※質問が投稿されてから数日経っていますが、回答もコメントも無いようなので: 質問で挙げられているコードは恐らく以下の記事のコードをもとにしてSpring Batch 5用に移植したものだと思いますが、 [Spring BatchのChunkモデルのバッチ作成 - Qiita] https://qiita.com/dengxinrong/items/1547d6379be4d05a4f3c 当方で試した限りでは質問中のコードですと"step1"のステップ/チャンクが実行されていないようで、クラスを分ける前に修正が必要なはずです。この辺りは確認済みでしょうか。 あと、ご質問に正確なSpring BootやSpring Batchのバージョンや開発環境を示した方が良いと思います。
dodox86

2025/03/14 01:42

こちらはもう放置された質問と言うことで認識しました。(最近、そういった質問も多いので)
totomore

2025/03/15 00:55

ご確認ありがとうございます。 および回答が遅れまして申し訳ございません。 移植も言われているとおりで、そのとおりで作成しました。 上記サンプルを動くように改善するのが難しく 設計者の方に(質問した方法で)クラス分けをしない方向にお願いしようと思います。 そのため、この質問はクローズといたします。 設計者の方がクラス分け必要と言われましたら 別で質問を上げたいと思います。
guest

回答1

0

自己解決

設計者の方に別の対応方法でお願いすることにしたのでクローズとする。

投稿2025/03/15 00:57

totomore

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問