[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로 확인 가능

 

+ Recent posts