无法通过 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();
}
这是我的配置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();
}