스프링 배치 5.0

스프링 배치 5.0 바뀐점 - Job Parameter

코드 살인마 2023. 5. 10. 23:44
728x90

다양한 Job Parameter 타입

4.x 버전까지는 4개의 Type(Long, Double, String, Date)만을 지원했다.

5.0부터는 JobParameter를 커스텀해서 사용할 수 있다.

아래는 Spring Batch 5.0 변경 관련 문서에서 Job Parameter의 달라진 구현 부분이다.

---public class JobParameter implements Serializable {
+++public class JobParameter<T> implements Serializable {

---   private Object parameter;
+++   private T value;

---   private ParameterType parameterType;
+++   private Class<T> type;
}

코드를 보면 제네릭 타입이 추가되었다.

또한 위 타입 변경으로 인한 BATCH_JOB_EXECUTION_PARAMS테이블도 업데이트 되었다.

CREATE TABLE BATCH_JOB_EXECUTION_PARAMS  (
    JOB_EXECUTION_ID BIGINT NOT NULL ,
---    TYPE_CD VARCHAR(6) NOT NULL ,
---    KEY_NAME VARCHAR(100) NOT NULL ,
---    STRING_VAL VARCHAR(250) ,
---    DATE_VAL DATETIME(6) DEFAULT NULL ,
---    LONG_VAL BIGINT ,
---    DOUBLE_VAL DOUBLE PRECISION ,
+++    PARAMETER_NAME VARCHAR(100) NOT NULL ,
+++    PARAMETER_TYPE VARCHAR(100) NOT NULL ,
+++    PARAMETER_VALUE VARCHAR(2500) ,
    IDENTIFYING CHAR(1) NOT NULL ,
    constraint JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID)
    references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
);

기본 작업 매개변수 변환

5.0 이전 JobParameter 표기법은 아래와 같다.
[+|-]parameterName(parameterType)=value

5.0에서는 2가지 표기법을 사용할 수 있는데 기본 표기법은 아래와 같다.

  • 기본 표기법
    parameterName=parameterValue,parameterType,identificationFlag

  • 확장 표기법 (JSON 형식으로 표현이 가능하다.)
    parameterName='{"value": "parameterValue", "type":"parameterType", "identifying": "booleanValue"}'

REFERENCE

https://github.com/spring-projects/spring-batch/wiki/Spring-Batch-5.0-Migration-Guide#job-parameters-handling-updates