티스토리 뷰
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과 사용방법이 있다.
참고
'Programming > 유용한 라이브러리' 카테고리의 다른 글
Typesafe Config (1) | 2020.04.24 |
---|---|
JsonPath + Template Engine (0) | 2020.04.11 |
JsonPath (0) | 2020.04.03 |
MapStruct (0) | 2019.08.30 |
Guava AsyncEventBus (0) | 2019.02.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java Equals
- Typesafe Config
- Query DSL
- Spring
- Sprint RetryTemplate
- Charles proxy
- @Primary
- Property
- Spring Registrar
- java generic
- Criteria
- JPA
- guava
- scikit-learn
- SmartLifecycle
- spring spel
- Embeddable Mapping
- Embedded Mapping
- 복합키 Mapping
- RetryTemplate
- JPA Criteria
- Akka
- Join Table
- Spring JDBC Template
- Discriminate Mapping
- Mapping
- DI
- java EqualsAndHashCode
- Registrar
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함