Spring Boot · 2026-01-25

Springdoc OpenAPI로 Spring Boot API 설명서 작성

Springdoc OpenAPI를 이용해 Spring Boot API를 설명서 형태로 자동 생성하기 위한 설정, 어노테이션 활용, Swagger UI 구성과 보안 통합 정리

작성일 : 2026-01-25 ㆍ 작성자 : 관리자
post
목차

개요

API를 명확히 표현하면 개발과 유지보수가 쉬워진다. Spring Boot 프로젝트에 Springdoc OpenAPI를 적용하면 코드 중심으로 OpenAPI 스펙을 만들고 Swagger UI로 탐색 가능한 인터페이스를 제공할 수 있다. 이 글은 처음 접하는 개발자도 이해하기 쉬운 단계로 설정부터 어노테이션 활용, 보안 연동까지 정리한다.

설치와 기본 설정

Maven 의존성

가장 흔한 방법은 springdoc-openapi-ui 의존성을 추가하는 방식이다.

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-ui</artifactId>
  <version>2.1.0</version>
</dependency>

Gradle 예시

implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0"

application.properties

기본적으로 별도 설정이 없어도 /swagger-ui/index.html 또는 /v3/api-docs 경로로 접근 가능하다. 기본 설정을 변경하려면 properties를 사용한다.

springdoc.api-docs.path=/v3/api-docs
springdoc.swagger-ui.path=/swagger-ui.html

OpenAPI 커스터마이징

전역 메타데이터를 설정하려면 OpenAPI 빈을 만들면 된다. 이 빈으로 제목, 설명, 버전, 라이선스 등을 정의할 수 있다.

import org.springdoc.core.models.GroupedOpenApi;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.OpenAPI;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenApiConfig {

  @Bean
  public OpenAPI customOpenAPI() {
    return new OpenAPI()
      .info(new Info().title("My API").version("v1").description("서비스 API 설명"));
  }

  @Bean
  public GroupedOpenApi publicApi() {
    return GroupedOpenApi.builder()
      .group("public")
      .pathsToMatch("/api/**")
      .build();
  }
}

컨트롤러 문서화

컨트롤러 수준에서 어노테이션을 붙이면 엔드포인트별 설명이 자동으로 추가된다. 주요 어노테이션은 @Operation, @Parameter, @ApiResponse 등이다.

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Tag(name = "Users", description = "사용자 관련 API")
@RestController
public class UserController {

  @Operation(summary = "모든 사용자 조회", description = "등록된 모든 사용자 목록을 반환")
  @ApiResponse(responseCode = "200", description = "정상 응답")
  @GetMapping("/api/users")
  public ResponseEntity<List<User>> getAllUsers() {
    // 구현
  }
}

응답 스키마 명세

모델 클래스에 @Schema 어노테이션을 쓰면 필드별 설명과 예시를 추가할 수 있다. 이렇게 하면 Swagger UI에서 구조를 명확히 볼 수 있다.

Swagger UI 사용법

서버를 띄운 뒤 브라우저에서 /swagger-ui/index.html 또는 설정한 경로로 접속하면 인터랙티브 문서가 나타난다. 요청을 테스트하고 응답을 확인할 수 있어 개발 속도가 빨라진다.

버전 관리와 그룹핑

API가 커질수록 그룹을 나누는 것이 유리하다. GroupedOpenApi를 사용하면 경로 기준으로 문서를 분리하고 버전별 UI를 제공할 수 있다.

보안(예: JWT) 통합

보안을 문서화하면 인증이 필요한 엔드포인트를 UI에서 바로 확인하고 토큰을 설정해 테스트할 수 있다. SecurityScheme을 OpenAPI에 추가하면 된다.

import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;

@Bean
public OpenAPI securityOpenAPI() {
  return new OpenAPI()
    .addSecurityItem(new SecurityRequirement().addList("BearerAuth"))
    .components(new Components()
      .addSecuritySchemes("BearerAuth",
        new SecurityScheme()
          .type(SecurityScheme.Type.HTTP)
          .scheme("bearer")
          .bearerFormat("JWT")
      ));
}

팁과 주의사항

  • 프로덕션 환경에서는 Swagger UI 노출을 제한하거나 인증을 적용한다.
  • 대규모 스키마는 자동 생성 규칙을 검토해 불필요한 노출을 줄인다.
  • 컨트롤러와 DTO에 주석을 충실히 작성하면 문서 품질이 좋아진다.

정리

Springdoc OpenAPI는 Spring Boot 환경에서 비교적 간단하게 API 설명서를 코드로 관리하게 해준다. 의존성 추가, OpenAPI 빈 등록, 컨트롤러 어노테이션 적용, Swagger UI 확인의 흐름으로 시작하면 된다. 보안이나 그룹핑 같은 확장 기능도 단계적으로 도입할 수 있다.

springdoc openapi spring boot swagger spring boot 설정 api 문서화 spring boot springdoc spring boot openapi 설정 swagger-ui openapi3 spring boot api 설명서 springdoc 설정