Programming/유용한 라이브러리
Jcommander Parameter
Albothyl
2020. 4. 24. 13:14
Pojo Java Application 개발시 program argument를 받는 경우, "String[] args" 형태로 받기 때문에 argument가 여러개인 경우 변환하는 코드가 많아지고, 복잡해진다. "Jcommander Parameter"는 argument를 Annotation (@Parameter)로 설정할 수 있어, 가독성과 사용성이 월등히 좋아진다. 사용법을 간단히 소개한다.
1. Argument Class에 @Parameter Annotation으로 조건을 설정한다.
import com.beust.jcommander.Parameter;
import lombok.Getter;
import java.time.LocalDateTime;
// * Sample Argument : -profile local -execution_date 2011-12-03T10:15:30+09:00 -mail_send
@ToString
public class Argument {
@Parameter(names = { "-profile" }, required = true, description = "profile")
private String profile;
@Parameter(names = { "-execution_date" }, converter = LocalDateTimeArgumentConverter.class, required = true, description = "실행 시간")
private LocalDateTime executionDate;
@Parameter(names = { "-mail_send" }, description = "mail 전송 여부")
private Boolean isMailSend;
}
2. 필요한 경우 별도의 converter를 생성하여 적용한다.
import com.beust.jcommander.IStringConverter;
import java.time.format.DateTimeFormatter;
public class LocalDateTimeArgumentConverter implements IStringConverter<LocalDateTime> {
@Override
public LocalDateTime convert(String value) {
return LocalDateTime.parse(value, DateTimeFormatter.ISO_DATE_TIME);
}
}
3. 값을 parsing하여 Argument 객체를 생성해주는 Builder를 만든다.
import com.beust.jcommander.JCommander;
public class ArgumentBuilder {
public static Argument build(String[] args) {
Argument argument = new Argument();
JCommander.newBuilder()
.addObject(argument)
.build()
.parse(args);
return argument;
}
}
위 Sample Code는 기본적인 사용방법으로 이밖에 다양한 option과 사용방법이 있다.
참고