我头一次使用springboot集成swagger2的时候,以为半个小时就能搞定,后来因为404的问题,搞了三个多小时也没解决掉。
我总结了网上的2种解决方法:
- 配置webmvc的静态资源访问。
- pom里配置guava。
用头一种方法的比较多。 我给出相关链接:配置webmvc静态资源访问、一般是缺少jar包时报错才会用到guava这个(低版本的springboot)但是我在查询自己的bug时,也有说是因为静态资源的问题导致swagger-ui.html访问不到(链接)。
最后我只想说,可能每个人遇到的情况不一样吧。
我这里一直404是因为我本地的maven仓库的原因,具体是哪个包的问题,因为maven也没报错,也不知道是哪个包的问题。然后我就将原来的mavenRepository重命名(重命名时需要把开发工具eclipse关了,不然提示重命名不了),新建了一个mavenRepository,再打开eclipse,项目就会自动去下载一些jar。
如果自动下下载不完,可以选中项目,然后使用maven命令进行手动编译(clean compile),最后再maven update一次就好了。
下边我给出swagger的配置及代码:
swagger配置类:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import com.google.common.base.Predicates;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @Description: 在线文档生成时配置
* @author
* @date 2019年8月29日
*
*/
@Configuration
@EnableSwagger2
public class Swagger2Config{
@Bean
public Docket createRestApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(setApiInfo()).select()
.apis(RequestHandlerSelectors.basePackage("一般是controller包名"))
.paths(PathSelectors.any()).build();
return docket;
}
private ApiInfo setApiInfo() {
ApiInfo apiInfo = new ApiInfoBuilder()
.title("(测试)在线接口文档")
.description("前端相关接口的文档").version("1.0")
.build();
return apiInfo;
}
}
controller类:
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(value = "爬虫数据Controller", tags = { "爬虫接口" })
@RestController
@RequestMapping(value = "spider")
public class SpiderController {
@ApiOperation(value = "获取爬虫数据列表", notes = "传入各种条件获取爬虫数据列表", response = List.class)
@RequestMapping(value = "getSpiderList")
public List getSpiderList() {
return new ArrayList();
}
}
application类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
主要就是swagger的配置类及@Configuration和@EnableSwagger2注解。根本就不需要配置静态资源(如果项目原来没有其他静态资源的话),是官网还是哪里忘记了,反正正常情况只需要我以上代码,然后在application.yml里配置上端口号就可以启动运行了,然后访问本地ip+端口号/swagger-ui.html就可以访问了。
如果根据我以上的还是没解决掉,可以留言,我会尽快回复。