package egovframework.config; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import org.springdoc.core.GroupedOpenApi; import org.springdoc.core.SpringDocUtils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RequestMapping; /** * Swagger UI 설정 클래스 * OpenAPI 3.0 스펙을 기반으로 API 문서화를 위한 설정을 제공합니다. * 세션 기반 인증을 사용하므로 별도의 보안 스키마를 설정하지 않습니다. * @Controller 어노테이션이 있는 클래스도 스캔하도록 설정합니다. */ @Configuration public class SwaggerConfig { static { // @Controller 어노테이션이 있는 클래스도 스캔하도록 설정 SpringDocUtils.getConfig().addAnnotationsToIgnore(RequestMapping.class); } /** * 모든 API를 문서화하는 GroupedOpenApi 빈을 정의합니다. * * @return GroupedOpenApi 설정 객체 */ @Bean public GroupedOpenApi allApi() { return GroupedOpenApi.builder() .group("All") .packagesToScan("go.kr.project") .pathsToMatch("/**") .build(); } /** * 로그인 관련 API를 문서화하는 GroupedOpenApi 빈을 정의합니다. * * @return GroupedOpenApi 설정 객체 */ @Bean public GroupedOpenApi loginApi() { return GroupedOpenApi.builder() .group("Login") .packagesToScan("go.kr.project.login") .pathsToMatch("/login/**") .build(); } /** * OpenAPI 설정을 정의합니다. * API 문서의 기본 정보(제목, 설명, 버전 등)를 설정합니다. * * @return OpenAPI 설정 객체 */ @Bean public OpenAPI openAPI() { Info info = new Info() .title("XIT Framework API") .description("XIT Framework API 문서 - 세션 기반 인증 사용") .version("v1.0.0") .license(new License().name("Apache 2.0").url("http://springdoc.org")); return new OpenAPI() .components(new Components()) .info(info); } }