Spring AI 실습 강의 요약
1. 프로젝트 생성 및 가져오기
- Spring Initializr(웹 UI)를 통해 Gradle 기반 Spring 프로젝트를 생성한다.
- Spring AI 관련 라이브러리를 선택하면
build.gradle 파일에 의존성이 자동 추가된다.
- Generate 버튼을 누르면 압축 파일이 다운로드되며, 압축을 해제한 뒤 기존 작업 폴더로 이동하거나 IDE(STS, IntelliJ, VS Code)에서 Import 한다.
- Gradle Project로 Import 할 경우, 프로젝트 루트 폴더를 지정하면 된다.
- 최초 실행 시에는 Java 버전, 포트 충돌 여부, 기존 실행 중인 애플리케이션 종료 여부를 확인해야 한다.
2. 기본 확인 포인트
프로젝트를 열었을 때 반드시 확인해야 할 파일:
-
build.gradle
- Spring AI, 모델 연동(OpenAI, Gemini, Claude, Ollama 등) 관련 의존성 확인
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.9'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
ext {
set('springAiVersion', "1.1.2")
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
// ✅ Google Gemini (Google Generative AI)
implementation 'org.springframework.ai:spring-ai-starter-model-google-genai'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
dependencyManagement {
imports {
mavenBom "org.springframework.ai:spring-ai-bom:${springAiVersion}"
}
}
tasks.named('test') {
useJUnitPlatform()
}
-
application.yml 또는 application.properties
- API Key 설정
- 모델 선택 정보
- 포트, 데이터소스 설정

이 두 파일을 먼저 확인하는 습관이 중요하다.
3. API Key 기반 LLM 연동 테스트
- OpenAI, Gemini, Claude 등의 API Key를 발급받아 설정 파일에 등록
- 컨트롤러에서 간단한 프롬프트를 코드로 전달하여 응답을 받는 방식으로 테스트
- Key가 없거나 잘못되면 실행 시 에러가 발생하므로, 각 모델별 정상 동작 여부를 확인
- 여러 Key를 동시에 테스트하여 어떤 모델이 정상 동작하는지 비교 가능
4. 로컬 LLM (Ollama) 활용
- Ollama를 설치하여 로컬 환경에서 LLM 실행
- Hugging Face 등에서 공개된 모델을 다운로드하여 사용
- 모델 파일은 수 GB 단위로 저장되며, 로컬 디스크 용량 관리 필요
- 모델 경로에서 용량 및 다운로드 시점을 확인하여 불필요한 모델은 삭제
- API Key 없이 로컬 모델을 통해 질문/응답 테스트 가능
의미:
- 클라우드 API 비용 없이 실험 가능
- 성능은 상용 모델보다 낮을 수 있으나, 구조 이해와 서비스 실험에 유용
5. Controller 기반 웹 요청 처리
-
@RestController, @GetMapping, @PostMapping 등을 사용하여 요청 처리
-
Query Parameter(@RequestParam)를 활용해 브라우저 주소창에서 입력값 전달
-
예:
/ai/generate?message=오늘 날씨 알려줘
-
컨트롤러 코드를 보면 어떤 URL로 요청해야 하는지 바로 파악 가능
중요 포인트:
- 프로젝트가 커질수록 요청 경로 네이밍 규칙이 중요
- AI 기능용 경로와 일반 서비스 경로를 명확히 분리하는 것이 유지보수에 유리
6. Front-End 연동 관점
- 현재 실습은 브라우저 주소창 테스트 중심
- 실제 서비스에서는 React 등 프론트엔드에서 입력값을 받아 Controller로 전달
- Spring AI는 백엔드 역할, React는 UI 역할로 분리 가능
- 응답 결과를 JSON 형태로 받아 화면에 렌더링하는 구조로 확장 가능
7. JSON / 이미지 응답 테스트
- 텍스트 응답뿐 아니라 JSON 형태의 응답 제공 가능
- 이미지 생성 기능은 일부 모델(OpenAI 등)에서만 지원
- 모델에 따라 지원 기능이 다르므로 문서 확인 필수
8. 메모리 DB (H2) 활용
활용 목적:
한계:
9. DB + AI 연계 개념
- DB에 저장된 데이터를 기반으로 AI 질의 수행 가능
- 예: 도서, 저자, 출판사 테이블을 생성하고 질문에 따라 데이터 조회
- 향후 Docker 기반 MySQL, PostgreSQL 등 영속 DB로 확장 가능
10. 전체 흐름 정리
- 외부 API 기반 LLM 사용 (OpenAI, Gemini 등)
- 로컬 LLM(Ollama) 다운로드 및 실행
- Spring Controller를 통한 요청 처리
- 프론트엔드 연동 가능 구조 이해
- DB 연계 및 향후 서비스 확장 가능성 이해
11. 핵심 메시지
- 목표는 새로운 LLM을 만드는 것이 아니라, 기존 모델을 활용한 서비스 개발
- 데이터, 요청 구조, 프롬프트 설계가 더 중요
- 작은 프로젝트라도 전체 흐름을 직접 경험하는 것이 중요
Spring AI는 실무에서 AI 기능을 빠르게 서비스에 접목할 수 있는 도구이며, 다양한 모델과 연동 구조를 이해하는 것이 이번 실습의 핵심이다.