SpringBoot 웹 서비스 - 부분 초기 구성
이 게시물에서는 Spring Boot 애플리케이션에서 OpenAPI를 구성하고 루트 URL에서 Swagger UI로의 편리한 리디렉션을 추가하는 방법을 살펴보겠습니다. 이 설정을 통해 API 문서가 개선되고 개발자가 더 쉽게 접근할 수 있게 됩니다.
OpenAPI 빈 구성
먼저 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 리디렉션 컨트롤러
다음으로 사용자를 루트 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.yaml 업데이트 중
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: 애플리케이션 버전을 지정하기 위해 빌드 프로세스 중에 채워질 가능성이 있는 자리 표시자를 참조합니다.
- MVC 구성:
problemdetails.enabled: 예외에 대한 응답 본문에서 자세한 문제 보고서를 활성화합니다.
- 관리 엔드포인트:
endpoints.web.exposure.include: '*':** 모니터링 및 관리 목적으로 모든 액추에이터 엔드포인트를 노출합니다.
info.git.mode: full: /info 엔드포인트에서 자세한 Git 정보를 제공합니다.
- 서버 구성:
포트: 서버가 들어오는 요청을 수신하는 포트를 설정합니다(기본값 8080, 여기서는 8888로 설정됨).
servlet.context-path: 애플리케이션의 컨텍스트 경로를 정의하여 요청이 올바르게 라우팅되도록 합니다.
error.whitelabel.enabled: false: 기본 화이트라벨 오류 페이지를 비활성화하여 개발 중에 더 많은 정보를 제공하는 오류 메시지를 제공합니다.
배너.txt 추가
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")) ); } }
이 접근 방식은 애플리케이션 시작에 전문적인 손길을 더하고 귀중한 정보를 한눈에 제공합니다.
Dockerfile 추가
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

시스템 도킹의 필드 매핑 처리 시스템 도킹을 수행 할 때 어려운 문제가 발생합니다. 시스템의 인터페이스 필드를 효과적으로 매핑하는 방법 ...

많은 응용 프로그램 시나리오에서 정렬을 구현하기 위해 이름으로 이름을 변환하는 솔루션, 사용자는 그룹으로, 특히 하나로 분류해야 할 수도 있습니다.

데이터베이스 작업에 MyBatis-Plus 또는 기타 ORM 프레임 워크를 사용하는 경우 엔티티 클래스의 속성 이름을 기반으로 쿼리 조건을 구성해야합니다. 매번 수동으로 ...

IntellijideAultimate 버전을 사용하여 봄을 시작하십시오 ...

Java 객체 및 배열의 변환 : 캐스트 유형 변환의 위험과 올바른 방법에 대한 심층적 인 논의 많은 Java 초보자가 객체를 배열로 변환 할 것입니다 ...

전자 상거래 플랫폼에서 SKU 및 SPU 테이블의 디자인에 대한 자세한 설명이 기사는 전자 상거래 플랫폼에서 SKU 및 SPU의 데이터베이스 설계 문제, 특히 사용자 정의 판매를 처리하는 방법에 대해 논의 할 것입니다 ...

데이터베이스 쿼리에 tkmyBatis를 사용하는 경우 쿼리 조건을 구축하기 위해 엔티티 클래스 변수 이름을 우아하게 가져 오는 방법이 일반적인 문제입니다. 이 기사는 고정 될 것입니다 ...
