반응형
Spring Boot에서 OpenAPI 기반 **서버 스텁(Server Stub)**을 생성하는 방법을 단계별로 정리해 드리겠습니다.
✅ 목표
**OpenAPI 명세 파일(api.yaml 또는 api.json)**을 기반으로
👉 Spring Boot용 API 컨트롤러, DTO, 서비스 인터페이스 등 기본 코드 자동 생성
🛠️ 1. 준비물
항목설명
OpenAPI 명세 | .yaml 또는 .json (예: SAP API Hub에서 다운로드 가능) |
Java 설치 | JDK 11 이상 |
OpenAPI Generator | 설치 or Docker 사용 |
Gradle 또는 Maven | Spring Boot 프로젝트 빌드 도구 |
✅ 2. OpenAPI Generator 설치 (선택)
▶ CLI 직접 설치
brew install openapi-generator # macOS
또는
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.6.0/openapi-generator-cli-6.6.0.jar -O openapi-generator-cli.jar
alias openapi-generator="java -jar openapi-generator-cli.jar"
▶ Docker 사용
docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate \
-i /local/api.yaml \
-g spring \
-o /local/generated
✅ 3. 생성 명령어
openapi-generator generate \
-i ./api.yaml \
-g spring \
-o ./generated-spring-api \
--additional-properties=interfaceOnly=true,basePackage=com.example.api,apiPackage=com.example.api.controller,modelPackage=com.example.api.model
주요 옵션
옵션설명
-i | 입력 OpenAPI 파일 (.yaml or .json) |
-g spring | Spring 서버 스텁 생성기 |
-o | 출력 디렉토리 |
--additional-properties | 패키지 이름 지정, interfaceOnly 옵션 등 |
🗂️ 4. 생성되는 주요 파일 구조 예
generated-spring-api/
├── pom.xml
├── src/main/java/com/example/api
│ ├── controller/
│ │ └── PetApi.java ← API 인터페이스
│ ├── model/
│ │ └── Pet.java ← DTO 클래스
- PetApi.java: API 인터페이스. 직접 구현해야 할 부분
- Pet.java: 요청/응답용 데이터 모델
- ApiUtil, ApiException: 공통 유틸
🔧 5. 실제 구현
생성된 인터페이스를 구현하세요.
예: PetApiImpl.java
@RestController
public class PetApiImpl implements PetApi {
@Override
public ResponseEntity<Pet> getPetById(Long petId) {
Pet pet = new Pet();
pet.setId(petId);
pet.setName("Choco");
return ResponseEntity.ok(pet);
}
}
🧪 6. 실행 및 테스트
cd generated-spring-api
./mvnw spring-boot:run
📌 추가 팁
목적설정
Spring Boot 3.x 대응 | --library spring-boot 추가 |
SpringDoc 사용 | --additional-properties=useSpringBoot3=true,useSpringDoc=true |
Controller 자동 구현 (실행 가능한 stub) | interfaceOnly=false (기본값) |
Swagger 문서 제공 | /v3/api-docs, /swagger-ui/index.html 자동 제공됨 (SpringDoc 기반) |
📦 요약
항목내용
사용 도구 | OpenAPI Generator |
입력 | api.yaml (OpenAPI 명세) |
출력 | Spring Boot 서버 코드 (Controller Interface, DTO 등) |
사용처 | SAP API 연동 서버 개발, 사내 표준 API 스펙 기반 자동화 서버 구현 |
반응형
'IT' 카테고리의 다른 글
SAP ERP 연동을 위한 비동기 전표 처리 시스템 (0) | 2025.06.17 |
---|---|
Server Stub이란? (0) | 2025.06.16 |
OpenAPI란? (0) | 2025.06.16 |
HTTP/1.1과 HTTP/2 의 차이 (0) | 2025.05.19 |
Airflow + Redis + Kafka를 포함한 통합 docker-compose 구성 (0) | 2025.04.02 |