티스토리 뷰

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과 사용방법이 있다.

 

 

참고

- http://jcommander.org/

- https://mvnrepository.com/artifact/com.beust/jcommander

'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
«   2024/05   »
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
글 보관함