오류상황
SpringBoot3.1.2 버전 프로젝트에 Swagger를 적용하려고한다.
https://devfunny.tistory.com/692
▶ 이전에 Swagger3.0을 적용하고 남겨둔 포스팅이 있어서 참고했지만 아래와 같은 오류를 만나게된다.
Type javax.servlet.http.HttpServletRequest not present
▶ stackoverflow의 답변은 다음과 같다.
대부분의 답변들은 모두 같은 내용이였다. 요약하자면, SpringBoot 3.0은 JavaEE가 아닌 JakartaEE용으로 빌드되었는데, JakartaEE를 지원하는 SpringFox 릴리스가 없기 때문에 위와 같은 오류가 발생하는 상황이다.
해결방안으로는 아래 3가지가 있다.
1) SpringBoot 버전을 이전 버전인 2.7로 다운그레이드한다.
2) 새 버전의 Swagger을 기다려야한다.
3) springdoc-openapi를 사용한다.
위 해결방안 중, 제일 적합해보이는 3)번을 적용해보기로했다. 3)번은 SpringBoot3.x 버전 이상부터는 springfox가 아닌 springdoc-openapi-ui 라이브러리를 사용하는 방법이다.
springdoc-openapi 적용
공식문서의 url은 다음과 같다.
springdoc-openapi 라이브러리는 스프링 부트 프로젝트를 사용하여 API 문서 생성을 자동화하는데 도움을 준다.
위 라이브러리는 다음을 지원한다.
- OpenAPI 3
- Spring-boot v3 (Java 17 & Jakarta EE 9)
- JSR-303, specifically for @NotNull, @Min, @Max, and @Size.
- Swagger-ui
- OAuth 2
- GraalVM native images
spring-boot와 swagger-ui 간의 통합을 위해 dependency를 추가한다. 추가하면 swagger-ui가 자동으로 배포된다. 즉, SwaggerConfig.java 파일을 별도 추가 없이도 즉시 적용 가능하다.
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.2.0</version>
</dependency>
한번, 실제 프로젝트에 적용해보자.
실제 적용
build.gradle.kts
/* swagger */
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0")
프로젝트 내에 한가지 셋팅만 추가하면 바로 접속이 가능하다.
http://localhost/swagger-ui/index.html
'Coding > Spring' 카테고리의 다른 글
SpringBoot 프로젝트에 MongoDB Atlas 연동 및 MongoRepository 사용하여 간단한 조회 API 수행해보기 (0) | 2024.01.30 |
---|---|
[Spring] 트랜잭션 관리 (@Transactional, 동적 프록시, JDK Dynamic Proxy vs GCLIB) (1) | 2024.01.01 |
DispatcherServlet 요청 흐름 (0) | 2022.12.13 |
Spring + Mybatis 활용 원리 (1) | 2022.12.01 |
Maven + MockMvc 환경에서 Spring Rest Docs 설정하기 (2) | 2022.09.14 |