You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
clean-parking/src/main/java/egovframework/config/SwaggerConfig.java

74 lines
2.4 KiB
Java

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);
}
}