SpringBoot+Swagger2时Swagger-ui.html是404的情况

我头一次使用springboot集成swagger2的时候,以为半个小时就能搞定,后来因为404的问题,搞了三个多小时也没解决掉。

我总结了网上的2种解决方法:

  1. 配置webmvc的静态资源访问。
  2. 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就可以访问了。

如果根据我以上的还是没解决掉,可以留言,我会尽快回复。

你可能感兴趣的:(SpringBoot,Swagger2)