Swagger / OpenAPI

RouterFunction과 handler source를 분석해 OpenAPI JSON을 변경 시에만 다시 씁니다.


Functional endpoint mode

ApiAccountRouter.java
java
@Bean
public RouterFunction<ServerResponse> apiAccount(ApiAccountHandler handler) {
  return route()
      .nest(path("/api/account"), builder -> builder
          .nest(path("/search"), search -> search
              .GET("/get-detail/{accountName}", handler::getDetail)
              .GET("/get-list", handler::getList)))
      .build();
}

nested path와 HTTP method, handler method reference를 합쳐 endpoint를 구성합니다. handler parser가 request body와 response publisher type을 추론합니다.

SwaggerJsonFileWatcher.Config

watchDirectory

기본 src/main/java

swaggerOutputFile

기본 src/main/resources/static/swagger.json

projectMode

기본 FUNCTIONAL_ENDPOINT, 선택 MVC

addDecompileJar / addDecompileJarClass

외부 jar type의 source 분석

addSourceClasspath

symbol resolution용 source/classpath

customTypeMapper

Class와 schema Map을 받아 custom schema를 적용

추론을 보정하는 annotation

java
@SelectedRequestParam(
    key = "pageSize",
    required = false,
    nullable = true,
    type = Integer.class
)
Integer pageSize = request.queryParam("pageSize").map(Integer::valueOf).orElse(null);

@SelectedResponseBody(type = MemberDetailResponse.class)
Mono<MemberDetailResponse> response = service.getDetail(accountName);

변경된 경우에만 write

generation 결과가 기존 JSON과 같으면 파일 timestamp를 불필요하게 바꾸지 않습니다. 프론트 watcher가 swagger 파일 변경을 감지하는 구조에서 재생성 loop를 줄이는 데 유리합니다.

© 2026 Byeolnaerim. All rights reserved.소개개인정보처리방침