diff --git a/spring-security-rest/pom.xml b/spring-security-rest/pom.xml index 2f9855d05c..4fd64b5289 100644 --- a/spring-security-rest/pom.xml +++ b/spring-security-rest/pom.xml @@ -167,6 +167,19 @@ test + + + io.springfox + springfox-swagger2 + 2.2.2 + + + + io.springfox + springfox-swagger-ui + 2.2.2 + + @@ -260,6 +273,10 @@ 4.11 1.10.19 + + 2.2.2 + 2.2.2 + 4.4.1 4.5 diff --git a/spring-security-rest/src/main/java/org/baeldung/spring/SwaggerConfig.java b/spring-security-rest/src/main/java/org/baeldung/spring/SwaggerConfig.java new file mode 100644 index 0000000000..64f61055f2 --- /dev/null +++ b/spring-security-rest/src/main/java/org/baeldung/spring/SwaggerConfig.java @@ -0,0 +1,53 @@ +package org.baeldung.spring; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.bind.annotation.RequestMethod; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.builders.ResponseMessageBuilder; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import static com.google.common.collect.Lists.newArrayList; + +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + + @Bean + public Docket api(){ + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.basePackage("org.baeldung.web.controller")) + .paths(PathSelectors.ant("/foos/*")) + .build() + .apiInfo(apiInfo()) + .useDefaultResponseMessages(false) + .globalResponseMessage(RequestMethod.GET, + newArrayList(new ResponseMessageBuilder() + .code(500) + .message("500 message") + .responseModel(new ModelRef("Error")) + .build(), + new ResponseMessageBuilder() + .code(403) + .message("Forbidden!!!!!") + .build())); + } + + private ApiInfo apiInfo() { + ApiInfo apiInfo = new ApiInfo( + "My REST API", + "Some custom description of API.", + "API TOS", + "Terms of service", + "myeaddress@company.com", + "License of API", + "API license URL"); + return apiInfo; + } +} diff --git a/spring-security-rest/src/main/java/org/baeldung/spring/WebConfig.java b/spring-security-rest/src/main/java/org/baeldung/spring/WebConfig.java index 4d1d6e6403..7e1e9cfcc3 100644 --- a/spring-security-rest/src/main/java/org/baeldung/spring/WebConfig.java +++ b/spring-security-rest/src/main/java/org/baeldung/spring/WebConfig.java @@ -3,6 +3,7 @@ package org.baeldung.spring; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration @@ -14,4 +15,13 @@ public class WebConfig extends WebMvcConfigurerAdapter { super(); } + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("swagger-ui.html") + .addResourceLocations("classpath:/META-INF/resources/"); + + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + }