이 게시물에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

다양한 운영 체제에서 Java의 성능에 미묘한 차이가 있습니다. 1) JVM 구현은 핫스팟 및 OpenJDK와 같은 성능 및 쓰레기 수집에 영향을 미칩니다. 2) 파일 시스템 구조 및 경로 분리기는 다르므로 Java 표준 라이브러리를 사용하여 처리해야합니다. 3) 네트워크 프로토콜의 차별적 구현은 네트워크 성능에 영향을 미칩니다. 4) GUI 구성 요소의 외관과 동작은 시스템마다 다릅니다. 표준 라이브러리 및 가상 기계 테스트를 사용하면 이러한 차이의 영향을 줄이고 Java 프로그램을 통해 원활하게 실행할 수 있습니다.

javaoffersrobustobject-eientedprogramming (OOP) 및 top-notchsecurityfeatures.1) oopinjavaincludesclasses, 객체, 상속, 다형성, 및 캡슐화, 2) inablingflexibleantaintainableystems.2) secere-featecludejavirtmachine (jVM)

javaScriptandjavahavedistInctStrengths : javaScriptexcelsindynamictypingandasynchronousprogramming, whilejavaisrobustwithstrongoopandtyping.1) javaScript'sdynamicnatureallowsforrapiddevelopmentand prothotyping, withasync/withasynon-blockingi/o.2)

javaachievesplatforminccendenceThermeThoughthejavavirtualMachine (JVM) 및 BYTECODE.1) thejvmGretsByTecode, thesAmeCodetorUnonOnonAnyPlatFormwithajvm.2) bytecodeiscomeDeDfromjavasourcodeanDisplatform-howhowhowhownectection, howludection, howludectionnectection

java'splatforminccendenceMeansapplicationsCannonanyplatformwithajvm, "WriteOnce, Runanywhere"를 활성화하지만, 도전적인 jvminconsistencies, libraryportability 및 andperformancevariations.toaddressthese : 1) Usecross-platformtestingtools, 2).

JVM 'sperformanceIscompetitive, ontotherRuntimes, 안전 및 생산성을 제공합니다

javaachievesplatformincendenceThermeThoughthejavavirtualMachine (JVM), codeiscompiledintobytecode, notmachine-specificcode.2) bytecodeistredbythejvm, anblingcross- shoughtshoughts

thejvmisanabstractcomputingmachinecrucialforrunningjavaprogramsduetoitsplatform-independentarchitection.itincludes : 1) classloaderforloadingclasses, 2) runtimeDataAreaFordatorage, 3) executionEnginewithgringreter, jitcompiler 및 ggarocubucbugecutec


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

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

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.