Java

Spring Batch - 기본사용법

내이름효주 2024. 4. 23. 15:34
  • backup table 생성
    DB 백업
    mysqldump -u root batch_ex_24_04 > batch_ex_24_04.sql
    mysqldump -u root DB명 > 백업파일명.sql
    DB 백업본을 다시 복원
    mysql -u root batch_ex_24_04_backup < batch_ex_24_04.sql
    mysql -u root DB명 < 백업파일명.sql​
    • 직접 입력하지 않고 테이블 backup
      ➡️ XAMPP에서 Shell클릭해서 cmd창을 열고 아래 명령어 입력
      // 백업 데이터베이스 만들기
      mysqldump -u root "백업할 데이터베이스명" | mysqldump -u root "백업 시켜줄 데이터베이스명"​
      mysqldump -u root "백업할 데이터베이스명" > "백업 시켜줄 데이터베이스명".sql
      
      // 백업 데이터베이스에 데이터 넣기
      mysql -u root "백업 시켜준 데이터베이스명" < "백업 데이터베이스명".sql
  • Spring 객체 생명주기
    • 보통 @Bean을 붙이면 Singleton이라고 해! - 스프링부트 앱이 꺼지기 전까지 살아있음
    • SessionScope는 Session이 살아있는동안 - 브라우저 당 객체가 1개씩! 
    • RequestScope는 요청당 객체가 1개씩 - Seeeion 보다 주기가 짧아
    • Prototype - 매번 새로 만듦
    • JobScope (Step에 추가) - Job이 실행될때만 객체가 만들어지는거, 메모리 낭비 안하는거지~
    • StepScope (Tasklet에 추가)
    • [참고] https://www.baeldung.com/spring-bean-scopes
  • Job
    > 1회: Step1 - 성공, Step2 - 성공 => 성공!
    > 2회: Step1 - 성공, Step2 - 실패 => 실패!
    > 3회: Step1 - 성공, Step2 - 성공 => 실패!

    ➡️ 스프링 배치 특징
    하나의 Job에서 같은 명령을 실행하는 경우 -  이전에 실패했으면 실패한 스텝만 시도해서 다시 실행

  • 실행 시 Parameter 전달
    • yml에서 job >  names > job.name로 실행하고자 하는 job을 결정
    • Run/Debug Configurations > modify Options > Program Argument를 추가해서 job name 입력

  • Spring batch Parameter Type
    • Double, Long, String, Date