JAVA/Spring

[Spring] Spring Batch(2)

코딩공대 2023. 4. 28. 19:32
728x90


1. Batch Job

 

     - 먼저 Spring Initializr에서 다음과 같이 설정해 준다.
        (여기서 JPA나 JDBC둘중에 하나만 사용하면 하나만 선택해 주면 된다.)

 

 

      - build.gradle 설정이 이렇게 나온다.

 

 

     - main 메소드에서 '@EnableBatchProcessing' 어노테이션으로 Batch기능을 활성화한다. 

 

     - 위의 어노테이션을 선한하지 않으면 Spring Batch 기능을 사용할 수 없기에 필수로 선언해야 한다.

 

 

     - Job 패키지를 생성하고 안에 SimpleJobConfiguration을 생성한다.

 

     - @Configuration -> Spring Batch의 모든 Job을 Configuration으로 등록해서 사용한다.

 

     - jobBuilderFactory.get("simpleJob") -> simpleJob이란 이름의 Batch Job을 생성한다, job의 이름은 별도로 지정하지 않고, 이렇게 Builder를 통해 지정한다.

 

     - stepBuilderFactory.get("simpleStep1") -> simpleStep1이란 이름의 Batch step을 생성한다, Builder를 통해 이름을 지정한다.

 

     - tasklet((contribution, chunkContext)) -> Step 안에서 수행될 기능들을 명시한다, Tasklet은 Step안에서 단일로 수행될 커스텀한 기능들을 선언할 때 사용한다, 여기서는 Batch가 수행되면 log.info()가 출력되게 한다.

 

     - Job안에는 여러 가지 Step이 존재하고, Step안에는 Tasklet 하나와 Reader, Processor, Writer 묶음이 존재한다.

        (Tasklet은 Spring MVC의 @Component, @Bean과 비슷한 역할이라고 봐도 된다.)

 

 

 

     - 실행시켜보면 로그가 예쁘게 찍힌다!


2. MySQL 환경에서 Spring Batch 실행하기   

 

Spring Batch 메타 데이터 / 출처 : metaDataSchema

 

  • Spring Batch의 메타 데이터는?

    • 이전에 실행한 Job이 어떤 것들이 있는지

    • 최근 실패한 Batch Parameter가 어떤 것들이 있고, 성공한 Job은 어떤것들이 있는지

    • 다시 실행한다면 어디서부터 시작하면 되는지

    • 어떤 Job에 어떤 Step이 있고, Step들 중 성공한 Step과 실패한 Step들은 어떤 것들이 있는지

     - 위의 데이터들이 있어야만 Spring Batch가 정상 작동한다.

     - 기본적으로 H2 DB를 사용할 경우 해당 테이블을 Boot가 실행될 때 자동으로 생성해주지만, MySQL이나 Oracle과 같은 DB를 사용할 때는 개발자가 직접 생성해야한다.


 

3. MySQL 연결하기

 

  • application.yml 파일 설정하기

 

  • 실행해보면

     - 잘실행된다!

'JAVA > Spring' 카테고리의 다른 글

[Spring] Spring Batch(4)  (0) 2023.05.19
[Spring] Spring Batch(3)  (0) 2023.05.19
[Spring] Spring Batch(1)  (0) 2023.04.26
[Spring] Spring Boot 3.0  (0) 2023.03.26
[Spring] Java Spring?  (0) 2023.03.23