Spring Shell Command 구현
Java2015. 1. 7. 22:16
개요
HelloWorldCommands 클래스를 통해서 Spring Shell 커맨드 구현 방법을 살펴 보겠습니다.
Marker interface
HelloWorldCommands는 org.springframework.shell.core.CommandMarker
인터페이스를 구현하고 있습니다.
@Component
public class HelloWorldCommands implements CommandMarker {
}
CommandMarker는 마커 인터페이스라서 커맨드 구현체라는 것을 알려주기 위해서 implements 할 뿐입니다. 따라서 구현할 메소드는 없습니다.
@Component annotation은 component-scan을 통해 bean으로 등록되라고 붙여 줬습니다.
CLI Annotation
HelloWorldCommands는 모두 3개의 annotation을 사용하여 쉘에서의 동작을 제어합니다.
CliAvailabilityIndicator
어떤 커맨드가 쉘에서 사용 가능한지를 알려주기 위해서 사용합니다. 이 annotation은 boolean 값을 반환하는 메소드에 붙이며, 이 메소드는 annotation에 명시한 커맨드의 사용 가능 여부를 반환합니다.
HelloWorldCommands에서는 hw simple
, hw complex
, hw enum
커맨드의 사용 가능 여부를 알려 주기 위해서 사용하였습니다.
private boolean simpleCommandExecuted = false;
@CliAvailabilityIndicator({"hw simple"})
public boolean isSimpleAvailable() {
//always available
return true;
}
@CliAvailabilityIndicator({"hw complex", "hw enum"})
public boolean isComplexAvailable() {
if (simpleCommandExecuted) {
return true;
} else {
return false;
}
}
위에서 isSimpleAvailable()
메소드는 언제나 true
를 반환하여, hw simple
커맨드가 언제나 사용 가능하다고 알려주고 있습니다.
또 isComplexAvailable
메소드는 simpleCommandExecuted
변수의 상태에 따라서 hw complex
, hw enum
커맨드의 사용 가능 여부를 알려줍니다.
'Java' 카테고리의 다른 글
Spring Boot : auto-configuration 그리고 debug (0) | 2015.04.17 |
---|---|
Spring Data JPA - LazyInitializationException (3) | 2015.04.14 |
Spring Shell 소개 (0) | 2015.01.02 |
logback.xml - No grammar constraints (DTD or XML Schema) referenced in the document (0) | 2012.05.10 |
Spring MVC의 CommonsMultipartResolver를 사용하여 업로드한 임시파일은 지워질까? (0) | 2010.02.23 |
댓글()