> Java > java지도 시간 > SpringBoot 웹 서비스 - 부분 초기 구성

SpringBoot 웹 서비스 - 부분 초기 구성

Susan Sarandon
풀어 주다: 2025-01-06 01:36:43
원래의
710명이 탐색했습니다.

SpringBoot Web Service - Part  Initial Configuration

이 게시물에서는 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 애플리케이션의 여러 주요 영역을 다룹니다.

  1. 애플리케이션 속성:

name: 애플리케이션의 이름을 정의합니다. 여기서는 book-catalog로 설정됩니다.

version: 애플리케이션 버전을 지정하기 위해 빌드 프로세스 중에 채워질 가능성이 있는 자리 표시자를 참조합니다.

  1. MVC 구성:

problemdetails.enabled: 예외에 대한 응답 본문에서 자세한 문제 보고서를 활성화합니다.

  1. 관리 엔드포인트:

endpoints.web.exposure.include: '*':** 모니터링 및 관리 목적으로 모든 액추에이터 엔드포인트를 노출합니다.

info.git.mode: full: /info 엔드포인트에서 자세한 Git 정보를 제공합니다.

  1. 서버 구성:

포트: 서버가 들어오는 요청을 수신하는 포트를 설정합니다(기본값 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿