CLI(Command Line Interface)란?

겔로그·2022년 10월 1일
0

Spring Boot

목록 보기
15/21
post-thumbnail

개요

이전에 작성했던 내용 중 CLI(Command Line Interface)에 대한 내용이 있었는데 CLI의 개념에 대해 다시 생각해보려고 하니 기억이 가물가물해 이 글을 작성했습니다.

오늘은 CLI가 무엇이며 스프링에서는 어떻게 개발하는지 알아보는 시간을 가지겠습니다.

CLI란?

CLI란, 커맨드 라인 인터페이스로서 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻합니다. 사용자는 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어집니다.

CLI 예시

  • linux 명령어

Spring에서의 CLI 개발

Spring에서도 다음과 같은 CLI 기능을 제공하기 위해 다양한 spring-shell-starter을 이용할 수 있습니다.

pom.xml

<dependency>
    <groupId>org.springframework.shell</groupId>
    <artifactId>spring-shell-starter</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>

코드는 다음과 같습니다.

SpringshellApplication.java


@EnableScheduling
@SpringBootApplication
public class SpringshellApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringshellApplication.class, args);
	}

}

메인이 되는 SpringshellApplication.java에는 다음과 같이 @EnableScheduling을 추가하며 Shell Command를 입력할 준비를 진행합니다.

Command.java

@ShellComponent
public class Command {

    @Autowired
    public Command() {
    }

    @ShellMethod(value = "테스트", key = "test")
    public String test(@ShellOption(defaultValue = "test입니다") String text) {
        return text;
    }
}

다음과 같이 @ShellComponent 어노테이션을 사용해 해당 객체가 shell Command 객체임을 알리고 @ShellMethod 어노테이션을 통해 해당 쉘에 추가된 기능을 구현할 수 있습니다.

실행 결과

주의사항

1. 패키지

SpringshellApplication.java기준으로 Command.java패키지 구조가 상위에 있을 경우 ShellComponent를 탐지하지 못하는 문제가 발생할 수 있으니 상위 경로에 있을 경우 ComponentScan 경로를 수정하시길 바랍니다.

2. 버전 호환

현재 나와있는 spring-shell-starter 버전은 최신 spring boot와의 버전 호환에 있어 순환참조 이슈가 존재합니다.

=> spring boot 버전을 2.5.X 버전으로 downgrade 해 이용해주시길 바랍니다.

참고 : https://github.com/spring-projects/spring-shell/issues/324

결론

오늘은 CLI가 무엇이며 spring 에서는 어떻게 개발하는지 알아보는 시간을 가졌습니다.
spring 어플리케이션에서 CLI를 개발할 경우 아래 주의사항을 참고해서 개발하시길 바랍니다.

profile
Gelog 나쁜 것만 드려요~

0개의 댓글