JSCODE Logo
블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] Spring Boot에서 CLI 기능 구현 및 테스트하기

JSCODE 시니
JSCODE 시니
2026. 06. 13.
author
JSCODE 시니
category
Spring AI
createdAt
Jun 13, 2026 09:52 AM
isPublic
isPublic
series
실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
slug
practice-implementing-cli-in-spring-boot
type
post
updatedAt

✅ 1. Spring Boot에서 CLI 기능 구현하기

package com.jscode.chat; @Configuration public class CliConfig { @ConditionalOnProperty(prefix = "spring.application", name = "cli", havingValue = "true") @Bean // 스프링 부트 서버가 완전히 켜지기 전에 단 한번 자동으로 실행 public CommandLineRunner cli(@Value("${spring.application.name}") String applicationName, ChatService chatService) { return args -> { // 1. 스프링 기본 로그 끄기 (채팅에 방해되지 않도록) LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); context.getLogger("ROOT").detachAppender("CONSOLE"); System.out.println("======================================="); System.out.println("🤖 [" + applicationName + "] CLI 챗봇을 시작합니다!"); System.out.println(" (종료하려면 'exit' 또는 'quit' 입력)"); System.out.println("======================================="); try (Scanner scanner = new Scanner(System.in)) { while (true) { System.out.print("\nUSER: "); String userMessage = scanner.nextLine(); // 2. 대화 종료 조건 (무한 루프 탈출) if (userMessage.equalsIgnoreCase("exit") || userMessage.equalsIgnoreCase("quit")) { System.out.println("대화를 종료합니다. 안녕히 계세요!"); break; } System.out.print("ASSISTANT: "); // 3.스트리밍 처리 (핵심 변경 포인트) // Flux(스트림)를 toIterable()로 바꾸면 일반적인 for-each 문으로 한 글자씩 꺼내 쓸 수 있음! Iterable<String> chatStream = chatService.stream(new Prompt(userMessage), "cli").toIterable(); for (String token : chatStream) { System.out.print(token); // 한 글자씩 화면에 출력 (타이핑 효과) } System.out.println(); // AI 대답이 끝나면 줄바꿈 한 번 } } }; } }
 
application.yml
spring: application: name: chat cli: true
 
 
 

✅ 2. 테스트

notion image
 
notion image