spring / / 2023. 4. 5. 09:18

Spring Shell로 커맨드 라인 애플리케이션 생성

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!로 표시되는 것을 확인할 수 있다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유