반응형

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

+ Recent posts