이 게시물에서는 Spring Boot 애플리케이션에서 OpenAPI를 구성하고 루트 URL에서 Swagger UI로의 편리한 리디렉션을 추가하는 방법을 살펴보겠습니다. 이 설정을 통해 API 문서가 개선되고 개발자가 더 쉽게 접근할 수 있게 됩니다.
먼저 OpenAPI 문서를 사용자 정의하기 위한 구성 클래스를 만들어 보겠습니다.
import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import org.springframework.boot.info.GitProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class OpenAPIConfig { @Bean public OpenAPI customOpenAPI(GitProperties gitProperties) { return new OpenAPI() .info(new Info() .title("Book Catalog API") .description("REST API for managing a book catalog. Application version: "+ gitProperties.get("build.version")) .version("1.0.0") .contact(new Contact() .name("Book Catalog Team") .email("support@bookcatalog.com") .url("https://github.com/vlaship/book-catalog")) .license(new License() .name("MIT License") .url("https://opensource.org/licenses/MIT")) ); } }
이 구성은 API에 대한 기본 정보가 포함된 사용자 정의 OpenAPI Bean을 생성합니다. 연락처 정보, 라이선스, 외부 문서 등 세부정보를 추가하여 이를 더욱 맞춤화할 수 있습니다.
GitProperties를 사용하여 자세한 내용을 제공할 수 있습니다.
다음으로 사용자를 루트 URL에서 Swagger UI로 리디렉션하는 컨트롤러를 만들어 보겠습니다.
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class OpenApiController { @GetMapping("/") public String index() { return "redirect:swagger-ui.html"; } }
이 간단한 컨트롤러는 루트 URL("/")에 @GetMapping을 사용하고 Swagger UI HTML 페이지로 리디렉션합니다.
application.yml이라고도 불리는 이 구성 파일은 애플리케이션 동작의 다양한 측면을 정의하는 데 중요한 역할을 합니다.
spring: application: name: book-catalog version: '@project.version@' mvc: problemdetails: enabled: true management: endpoints: web: exposure: include: '*' info: git: mode: full server: port: 8888 servlet: context-path: /${spring.application.name} error: whitelabel: enabled: false
제공된 YAML 구성은 Spring Boot 애플리케이션의 여러 주요 영역을 다룹니다.
name: 애플리케이션의 이름을 정의합니다. 여기서는 book-catalog로 설정됩니다.
version: 애플리케이션 버전을 지정하기 위해 빌드 프로세스 중에 채워질 가능성이 있는 자리 표시자를 참조합니다.
problemdetails.enabled: 예외에 대한 응답 본문에서 자세한 문제 보고서를 활성화합니다.
endpoints.web.exposure.include: '*':** 모니터링 및 관리 목적으로 모든 액추에이터 엔드포인트를 노출합니다.
info.git.mode: full: /info 엔드포인트에서 자세한 Git 정보를 제공합니다.
포트: 서버가 들어오는 요청을 수신하는 포트를 설정합니다(기본값 8080, 여기서는 8888로 설정됨).
servlet.context-path: 애플리케이션의 컨텍스트 경로를 정의하여 요청이 올바르게 라우팅되도록 합니다.
error.whitelabel.enabled: false: 기본 화이트라벨 오류 페이지를 비활성화하여 개발 중에 더 많은 정보를 제공하는 오류 메시지를 제공합니다.
1. 배너.txt 파일 생성
Spring Boot 프로젝트의 src/main/resources 디렉터리에 배너.txt라는 새 파일을 만듭니다.
2. 배너.txt에 서비스 세부정보 추가
이 파일에는 텍스트나 ASCII 아트를 추가할 수 있습니다. 예는 다음과 같습니다.
import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import org.springframework.boot.info.GitProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class OpenAPIConfig { @Bean public OpenAPI customOpenAPI(GitProperties gitProperties) { return new OpenAPI() .info(new Info() .title("Book Catalog API") .description("REST API for managing a book catalog. Application version: "+ gitProperties.get("build.version")) .version("1.0.0") .contact(new Contact() .name("Book Catalog Team") .email("support@bookcatalog.com") .url("https://github.com/vlaship/book-catalog")) .license(new License() .name("MIT License") .url("https://opensource.org/licenses/MIT")) ); } }
이 접근 방식은 애플리케이션 시작에 전문적인 손길을 더하고 귀중한 정보를 한눈에 제공합니다.
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class OpenApiController { @GetMapping("/") public String index() { return "redirect:swagger-ui.html"; } }
레이어 추출: 종속성을 위한 별도의 레이어를 생성하여 빌드 효율성을 높이고 이미지 크기 업데이트를 줄입니다.
다단계 빌드: 다단계 빌드 프로세스를 활용하여 빌드 환경을 런타임 환경에서 분리하여 최종 이미지를 더 작고 효율적으로 만듭니다.
경량 기본 이미지: azul/zulu-openjdk-alpine:21-jre-headless와 같은 최소 기본 이미지를 사용하여 이미지 크기를 더욱 줄입니다.
이 접근 방식을 사용하면 Docker 컨테이너 내 Spring Boot 애플리케이션의 빌드 속도가 빨라지고 이미지 크기가 작아지며 전반적인 성능이 향상됩니다.
위 내용은 SpringBoot 웹 서비스 - 부분 초기 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!