package com.arms.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import java.util.HashSet; import java.util.Set; /** * Swagger 설정 클래스 * Springfox 3.0.0 버전에 맞게 구성됨 */ @Configuration public class Swagger2Config { @Value("${springfox.documentation.swagger.v2.path:/global-config-api}") private String swaggerPath; @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .useDefaultResponseMessages(false) .consumes(getConsumeContentTypes()) .produces(getProduceContentTypes()) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.arms")) .paths(PathSelectors.any()) .build() .genericModelSubstitutes(Mono.class, Flux.class) .pathMapping(swaggerPath) ; } private Set getConsumeContentTypes() { Set consumeContentTypes = new HashSet<>(); consumeContentTypes.add("application/json;charset=UTF-8"); consumeContentTypes.add("application/x-www-form-urlencoded"); return consumeContentTypes; } private Set getProduceContentTypes() { Set produceContentTypes = new HashSet<>(); produceContentTypes.add("application/json;charset=UTF-8"); return produceContentTypes; } /** * API 정보 설정 * @return API 정보 객체 */ private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Java Service Tree Framework Global Config API") .description("자바 서비스 트리 프레임워크의 글로벌 설정 API 문서입니다.") .version("1.0.0") .contact(new Contact("ARMS 개발팀", "http://www.313.co.kr", "313@313.co.kr")) .license("Apache License Version 2.0") .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0") .build(); } }