[BoostCourse] Swagger API Document 적용
- 스프링에 Swagger 적용하는 방법 익히기
Pom.xml spac (Source)
- spring.version = 4.3.15.RELEASE (5.x.x 버전의 경우 모든 메서드를 구현하지 않아도 됨)
- jackson.version = 2.9.8
- swagger.version = 2.9.2
groupId | module |
version |
scope |
javax.servlet | javax.servlet-api | 3.1.0 | provided |
javax.servlet.jsp | javax.servlet.jsp-api | 2.3.2-b02 | provided |
javax.servlet | jstl | 1.2 | |
org.springframework | spring-webmvc | ${spring.version} | |
org.springframework | spring-test | ${spring.version} | |
com.fasterxml.jackson.core | jackson-core | ${jackson.version} | |
com.fasterxml.jackson.core | jackson-databind | ${jackson.version} | |
junit | junit | 4.12 | test |
io.springfox | springfox-swagger2 | ${swagger.version} | |
io.springfox | springfox-swagger-ui | ${swagger.version} |
config 설정 파일 리스트 (Source)
1. WebAppInitializer
클래스명 | 상속 | 설명 |
WebAppInitializer | AbstractAnnotationConfigDispatcherServletInitializer | |
구현 메서드 | - getRootConfigClasses() | - Spring 기본 설정파일 클래스를 지정 - ApplicationConfig.class |
- getServletConfigClasses() | - Spring MVC 설정 파일 클래스를 지정 - MvcConfig.class, SwaggerConfig.class |
|
- getServletMappings() | - DispatcherServlet이 동작할 맵핑정보를 설정 - "/"를 설정한다는 것은 모든 요청을 DispatcherServlet이 처리 |
|
- getServletFilters() | - 인코딩 필터를 설정 |
2. ApplicationConfig
클래스명 | 상속 | 설명 |
ApplicationConfig | @Configuration @ComponentScan(basePackages = {"service"}) |
- Spring MVC에서 사용할 Bean들을 설정하는 스프링 설정 |
3. MvcConfig
클래스명 | 상속 | 설명 |
MvcConfig | @Configuration @EnableWebMvc WebMvcConfigurer @ComponentScan(basePackages = { "controller" }) |
|
구현 메서드 | - configureDefaultServletHandling() | - DefaultServlet에 대한 설정 - DispatcherServlet이 처리하지 못하는 URL은 DefaultServlet이 처리 - 해당 설정이 없으면 자동 생성된 Swaager 페이지를 볼 수 없다. |
4. Swagger
클래스명 | 상속 | 설명 |
Swagger | @Configuration @EnableSwagger2 |
|
구현 메서드 | @Bean Docket api() |
- Swagger 사용 시에는 Docket Bean 을 품고있는 설정 클래스 1개가 기본으로 필요 - Spring Boot 에서는 기본적인 설정파일 1개로 Swagger 와 Swagger UI를 함께 사용가능하지만 Spring MVC 의 경우 Swagger UI를 위한 별도의 설정이 필요 - Swagger UI 를 ResourceHandler 에 수동으로 등록해야 하는 작업인데, SpringBoot 에서는 이를 자동으로 설정해주지만 Spring MVC 에서는 그렇지 않기 때문이다. |
Controller, Service, Dto
- Controller (Source)
클래스명 | Swagger Annotation |
CalculatorApiController | |
CalculatorResult plus(value1, value2) | @ApiOperation(value = "덧셈 구하기") @ApiResponses({ @ApiResponse(code = 200, message = "OK"), @ApiResponse(code = 500, message = "Exception") }) |
CalculatorResult minus(value1, value2) |
@ApiOperation(value = "뺄셈 구하기") @ApiResponses({ // Response Message에 대한 Swagger 설명 @ApiResponse(code = 200, message = "OK"), @ApiResponse(code = 500, message = "Exception") }) |
Swagger Page
- 설정 후 http://localhost:8088/swagger-ui.html로 접근 시 Swagger UI로 확인 가능
'Edu > BoostCourse - Web' 카테고리의 다른 글
[Mybatis] Spring4 & MyBatis (0) | 2020.05.20 |
---|---|
[Servlet] Dynamic Web Project 3.x spec (0) | 2020.03.12 |
[Servlet] Dynamic Web Project 2.5 spec (0) | 2020.03.12 |
[Spring] web.xml vs Initializer with Spring (0) | 2020.03.04 |
[BoostCourse] 웹 프론트엔드 취약점 (0) | 2020.03.02 |