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

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

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

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

3回答

4728閲覧

Spring Batch 5.0以降の書き方を知りたい

JackOguro

総合スコア4

Spring Batch

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2023/01/22 09:16

前提

Spring Batch 5.0以降で書き方が変更になったのですが、
現在使用している参考書「悲惨なミスをなくすSpringBatch入門書: Spring解体新書(バッチ編): 基礎から学べるSpring Batch」は、5.0以降に対応した書き方になっていないため、5.0以降に対応した書き方を教えて頂きたいです。
また、Spring Batch 5.0以降に対応した書き方をしているサイト・参考書が知りたい

ここに実現したいことを箇条書きで書いてください。

  • Spring Batch 5.0以降の書き方でBatchを実行したい
  • Spring Batch 5.0以降に対応した書き方をしているサイト・参考書が知りたい

発生している問題・エラーメッセージ

以下のサイトを参考にしたところエラーメッセージが発生してしまいました。
https://github.com/spring-projects/spring-batch/wiki/Spring-Batch-5.0-Migration-Guide

org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'helloTasklet' defined in class path resource [com/example/demo/config/BatchConfig.class]: @Bean definition illegally overridden by existing bean definition: Root bean: class [org.springframework.aop.scope.ScopedProxyFactoryBean]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodNames=null; destroyMethodNames=null; defined in BeanDefinition defined in file [C:\pleiades\2022-06\workspace\BatchHelloWorldTasklet\target\classes\com\example\demo\tasklet\HelloTasklet.class]

ファイル構成

イメージ説明

該当のソースコード

BatchConfig.java(Spring Batch 5.0以前の書き方)

java

1package com.example.demo.config; 2 3import org.springframework.batch.core.Job; 4import org.springframework.batch.core.Step; 5import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; 6import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; 7import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; 8import org.springframework.batch.core.launch.support.RunIdIncrementer; 9import org.springframework.batch.core.step.tasklet.Tasklet; 10import org.springframework.beans.factory.annotation.Autowired; 11import org.springframework.context.annotation.Bean; 12import org.springframework.context.annotation.Configuration; 13 14@Configuration 15@EnableBatchProcessing 16public class BatchConfig { 17 18 /** JobBuilderのFactoryクラス */ 19 @Autowired 20 private JobBuilderFactory jobBuilderFactory; 21 22 /** StepBuilderのFactoryクラス */ 23 @Autowired 24 private StepBuilderFactory stepBuilderFactory; 25 26 /** HelloTasklet */ 27 @Autowired 28 private Tasklet helloTasklet; 29 30 /** TaskletのStepを生成 */ 31 @Bean 32 public Step taskletStep1() { 33 return stepBuilderFactory.get("HelloTaskletStep1") // Builderの取得 34 .tasklet(helloTasklet) // Taskletのセット 35 .build(); // Stepの生成 36 } 37 38 /** Jobを生成 */ 39 @Bean 40 public Job taskletJob() throws Exception { 41 return jobBuilderFactory.get("HelloWorldTaskletJob") // Builderの取得 42 .incrementer(new RunIdIncrementer()) // IDのインクリメント 43 .start(taskletStep1()) // 最初のStep 44 .build(); // Jobの生成 45 } 46}

BatchConfig.java(Spring Batch 5.0以降の書き方)

java

1package com.example.demo.config; 2 3import org.springframework.batch.core.Job; 4import org.springframework.batch.core.Step; 5import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; 6import org.springframework.batch.core.job.builder.JobBuilder; 7import org.springframework.batch.core.launch.support.RunIdIncrementer; 8import org.springframework.batch.core.repository.JobRepository; 9import org.springframework.batch.core.step.builder.StepBuilder; 10import org.springframework.batch.core.step.tasklet.Tasklet; 11import org.springframework.context.annotation.Bean; 12import org.springframework.context.annotation.Configuration; 13import org.springframework.transaction.PlatformTransactionManager; 14 15import com.example.demo.tasklet.HelloTasklet; 16 17@Configuration 18@EnableBatchProcessing 19public class BatchConfig { 20 21 @Bean 22 public Tasklet helloTasklet() { 23 return new HelloTasklet(); 24 } 25 26 @Bean 27 public Step taskletStep1(JobRepository jobRepository, Tasklet helloTasklet, PlatformTransactionManager transactionManager) { 28 return new StepBuilder("HelloTaskletStep1", jobRepository) 29 .tasklet(helloTasklet, transactionManager) 30 .build(); 31 } 32 33 @Bean 34 public Job taskletJob(JobRepository jobRepository, Step step) { 35 return new JobBuilder("HelloTaskletStep", jobRepository) 36 .incrementer(new RunIdIncrementer()) 37 .start(step) 38 .build(); 39 } 40}

HelloTasklet.java(Spring Batch 5.0以前の書き方) ※ このクラスは書き方を変えておらず共通

java

1package com.example.demo.tasklet; 2 3import org.springframework.batch.core.StepContribution; 4import org.springframework.batch.core.configuration.annotation.StepScope; 5import org.springframework.batch.core.scope.context.ChunkContext; 6import org.springframework.batch.core.step.tasklet.Tasklet; 7import org.springframework.batch.repeat.RepeatStatus; 8import org.springframework.stereotype.Component; 9import lombok.extern.slf4j.Slf4j; 10 11@Component 12@StepScope 13@Slf4j 14public class HelloTasklet implements Tasklet { 15 16 @Override 17 public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) 18 throws Exception { 19 log.info("Hello World"); 20 return RepeatStatus.FINISHED; 21 } 22}

補足情報(FW/ツールのバージョンなど)

Spring Boot 3.0.2
Java 19

参考にしたサイト/資料

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

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

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

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

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

guest

回答3

0

vuejs で新しいファイルを作成するときは、vue CLI のガイドラインに従っていますか?
burrito craft

投稿2023/12/18 09:25

clamtaiga

総合スコア2

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

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

0

しかし、Spring Batchの公式ドキュメントやチュートリアル、コミュニティの投稿などを調べることで、最新のバージョンに関する情報を入手することができるかと思います。また、Immaculate Grid のバージョンアップに伴う変更点や新機能については、公式リリースノートや開発者ブログなども参考になるかもしれません。

投稿2023/08/28 07:52

carinamon

総合スコア6

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

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

0

「Spring Batch 5.0以降の書き方でBatchを実行したい」点について

以下のソースで動くと思いますので、試してみて下さい。

BatchConfig.java

  • src/main/java/com/example/demo/config/BatchConfig.java

java

1package com.example.demo.config; 2 3import org.springframework.batch.core.Job; 4import org.springframework.batch.core.Step; 5import org.springframework.batch.core.job.builder.JobBuilder; 6import org.springframework.batch.core.repository.JobRepository; 7import org.springframework.batch.core.step.builder.StepBuilder; 8import org.springframework.beans.factory.annotation.Autowired; 9import org.springframework.context.annotation.Bean; 10import org.springframework.context.annotation.Configuration; 11import org.springframework.transaction.PlatformTransactionManager; 12 13import com.example.demo.tasklet.HelloTasklet; 14 15@Configuration 16public class BatchConfig { 17 18 @Autowired 19 private HelloTasklet helloTasklet; 20 21 @Bean 22 protected Step taskletStep1(JobRepository jobRepository, PlatformTransactionManager transactionManager) { 23 return new StepBuilder("HelloTaskletStep1", jobRepository) 24 .tasklet(helloTasklet, transactionManager) 25 .build(); 26 } 27 28 @Bean 29 public Job taskletJob(JobRepository jobRepository, PlatformTransactionManager transactionManager) { 30 return new JobBuilder("HelloWorldTaskletJob", jobRepository) 31 .start(taskletStep1(jobRepository, transactionManager)) 32 .build(); 33 } 34}

application.properties

  • src/main/resources/application.properties

properties

1spring.datasource.url=jdbc:h2:mem:sampledb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 2spring.datasource.username=sa 3spring.datasource.password= 4spring.datasource.driver-class-name=org.h2.Driver

「Spring Batch 5.0以降に対応した書き方をしているサイト・参考書が知りたい」点について

参考書

  • 存じ上げません。

サイト

以下の2サイトが参考になりました。

投稿2023/08/12 19:41

編集2023/08/12 19:46
growthcoding

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問