Spring Shell
은 스프링 프레임워크를 사용하여 커맨드 라인 애플리케이션을 만들 수 있게 한다.
예제 코드
우선, maven 의존을 추가하자.
<dependency>
<groupId>org.springframework.shell</groupId>
<artifactId>spring-shell-starter</artifactId>
<version>2.1.7</version>
</dependency>
그리고 나서, 스프링 부트 애플리케이션을 만들어주자.
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
이제, hello와 goodbye에 해당하는 메소드를 생성한다.
@ShellComponent
public class HelloCommand {
@ShellMethod(key = "hello", value="I will say hello")
public String hello(@ShellOption(value = "-n", defaultValue = "World") String arg) {
return "Hello, " + arg + "!";
}
@ShellMethod(key = "goodbye", value="I will say goodbye")
public String goodbye() {
return "Goodbye!";
}
}
- @ShellComponent는 스프링 빈으로 등록하는 역할
- @ShellMethod는 커맨드를 추가하는 역할
- @ShellOption은 매개변수를 받는 역할
이렇게 하고 Application을 실행하자.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.4)
2023-04-05 09:06:26.278 INFO 87961 --- [ main] com.example.Application : Starting Application using Java 1.8.0_352 on localhost with PID 87961 (......)
2023-04-05 09:06:26.280 INFO 87961 --- [ main] com.example.Application : No active profile set, falling back to 1 default profile: "default"
2023-04-05 09:06:26.777 WARN 87961 --- [ main] org.jline : Unable to create a system terminal, creating a dumb terminal (enable debug logging for more information)
2023-04-05 09:06:26.880 INFO 87961 --- [ main] com.example.Application : Started Application in 0.759 seconds (JVM running for 1.021)
shell:>
여기서 help를 입력하면 사용할 수 있는 command가 표시된다.
shell:>help
AVAILABLE COMMANDS
Built-In Commands
help: Display help about available commands
stacktrace: Display the full stacktrace of the last error.
clear: Clear the shell screen.
quit, exit: Exit the shell.
history: Display or save the history of previously run commands
version: Show version info
script: Read and execute commands from a file.
Hello Command
goodbye: I will say goodbye
hello: I will say hello
shell:>hello rudaks
Hello, rudaks!
Hello, rudaks!로 표시되는 것을 확인할 수 있다.
반응형