Swagger Setting on Spring Boot with New Servlet Context


1. add dependencies
implementation("io.springfox:springfox-swagger2:${swagger2Version}")
implementation("io.springfox:springfox-swagger-ui:${swagger2Version}")

2. determine prefix ("/apigw" in this case) for new context and add setting in SpringBootApplication or other configuration
@SpringBootApplication(scanBasePackageClasses = ...)
public class PartnerControllerApplication {
 
    public static void main(final String[] args) {
        ...
    }
 
    @Bean
    public ServletRegistrationBean<DispatcherServlet> apigw() {
        val applicationContext = new AnnotationConfigWebApplicationContext(); // val from lombok
        applicationContext.register(ApiGwWebMvcConfig.class);
        val dispatcherServlet = new DispatcherServlet();
        dispatcherServlet.setApplicationContext(applicationContext);
        val servletRegistrationBean = new ServletRegistrationBean<>(dispatcherServlet, "/apigw/*");
        servletRegistrationBean.setName("apigw");
        return servletRegistrationBean;
    }
...

3. write ApiGwWebMvcConfig.java for new context
@Configuration
@ComponentScan(basePackageClasses = ApiGwControllerPackage.class)
@Import({Swagger2Config.class})
public class ApiGwWebMvcConfig extends WebMvcConfigurationSupport {

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry resourceHandlerRegistry) {
		resourceHandlerRegistry
				.addResourceHandler("/swagger-ui.html")
				.addResourceLocations("classpath:/META-INF/resources/")
				.setCachePeriod(0);
		resourceHandlerRegistry
				.addResourceHandler("/webjars/**")
				.addResourceLocations("classpath:/META-INF/resources/webjars/")
				.setCachePeriod(0);
	}
}

4. write Swagger2Config.java for swagger setting
@Configuration
@EnableSwagger2
public class Swagger2Config {
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("My API")
            .version("1.0.0")
            .build();
    }
 
    @Bean
    public Docket getDocketDefault() {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathMapping("/")
                .forCodeGeneration(true)
                .apiInfo(apiInfo());
    }
}

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-08-01 00:43:35
Processing time 0.0053 sec