入手idea不久,踩到的坑数不胜数,在此记录一下。
最近将一个MyEclipse开发的maven转移到idea开发,应要求整合swagger2,之前在MyEclipse也整合过,毫不犹豫地将dependency复制过来
io.springfox
springfox-swagger2
2.6.1
io.springfox
springfox-swagger-ui
2.7.0
然后将swagger2的配置复制过来
package com.common.comm.swagger;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Value("${swagger.enable}")
private boolean swagger_enable;
/**
* 通过 createRestApi函数来构建一个DocketBean 函数名,可以随意命名,喜欢什么命名就什么命名
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.enable(swagger_enable)
.globalOperationParameters(setToken())
.apiInfo(apiInfo())
// 调用apiInfo方法,创建一个ApiInfo实例,里面是展示在文档页面信息内容
.select()
// 控制暴露出去的路径下的实例
// 如果某个接口不想暴露,可以使用以下注解
// @ApiIgnore 这样,该接口就不会暴露在 swagger2 的页面下
.apis(RequestHandlerSelectors.basePackage("com.test"))
.paths(PathSelectors.any()).build();
}
// 构建 api文档的详细信息函数
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 页面标题
.title("test")
// 版本号
.version("1.0")
// 描述
.description("test").build();
}
/**
* 设置token参数
* @return
*/
private List setToken(){
ParameterBuilder tokenPar = new ParameterBuilder();
List pars = new ArrayList();
tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
return pars;
}
}
在Controller上加上注解
package com.test.controller;
/**
* @author whf
*/
@RestController
@RequestMapping(value = "test", method = RequestMethod.POST, produces = "text/plain;charset=utf-8")
@Api(description = "测试接口")
public class TestController {
// 省略方法
}
重启项目。。。
结果居然报了ClassNotFountException
what???
仔细检查复制过来的东西,完全没发现任何问题,原项目正常启动。
检查本地maven仓库,jar包正常。
更换swagger版本,还是报错。
疯狂百度,没什么结果。
疯狂google,还是没什么结果。
此处省略一万字。。。
就在我万分绝望,瞎jer配置的时候,突然在这里
发现了我的swagger2依赖(额。。这张截图是正常的,因为几天后才做记录,这个就没有去复现了,异常情况是红框部分可以展开,展开后就是我的那个swagger依赖jar)
双击那个jar,jar消失,应该是到左边的WEB-INF下面的lib里边去了。
重启项目
wc!!!成功了!!!
终于成功了。。。