无法通过 spring 引导获取 Swagger UI

Unable to get Swagger UI with spring boot

这是我的配置class

@SpringBootApplication
@EnableJpaRepositories
@EnableTransactionManagement
@EnableSwagger2
public class SwaggerExampleApplication {

public static void main(String[] args) {
    SpringApplication.run(SwaggerExampleApplication.class, args);
}

 @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select().apis(RequestHandlerSelectors.basePackage("com.example.controller")).paths(PathSelectors.any()).build().pathMapping("/");
    }

 private ApiInfo apiInfo() {
      return new ApiInfoBuilder()
      .title("Simple Hello App")
      .description("A simple calculator REST service made with Spring Boot in Java")
      .contact("lavya")
      .version("1.0")
      .build();
    }

}

这是我的资源class

@Component
@Path("/hello")
@Api(value="Test Hello",description="testing swagger")
public class ResourceController {

@GET
@Produces({MediaType.APPLICATION_JSON})
@ApiOperation(value="list employess",notes="list employees")
public List<Employee> displayDetails(){
    System.out.println("inside display");
    return Arrays.asList(new Employee(1,"ab","cdd","sass"));
    }

我无法在 运行 应用程序上检索 swagger ui、http://localhost:8080/swagger-ui.html,谁能告诉我为什么?

试试这个。对我有用。

@Configuration
public class WebMvcConfiguration extends WebMvcConfigurationSupport {

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        // Make Swagger meta-data available via <baseURL>/v2/api-docs/
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        // Make Swagger UI available via <baseURL>/swagger-ui.html
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

这对我有用:

@Configuration
@EnableSwagger2
@Profile({"!production"})
public class SwaggerConfiguration extends WebMvcConfigurerAdapter {

    @Autowired
    private ServletContext servletContext;

    @Bean
    public Docket api() {

        return new Docket(DocumentationType.SWAGGER_2)
                .pathProvider(new RelativePathProvider(servletContext) {
                    @Override
                    public String getApplicationBasePath() {
                        return "/";
                    }
                })
                .protocols(new HashSet<String>(Arrays.asList(protocols)))
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }