SSM项目配置Swagger2(Maven)之web配置springmvc是*.XXX配置,Swagger2本地化

1、pom文件引入jar

        
        
            io.springfox
            springfox-swagger-ui
            2.7.0
        

        
        
            io.springfox
            springfox-petstore
            2.7.0
        

导入以上两个包基本上就是够用了,不过因为各自项目配置的问题,有些项目只导入上面两个包会报错

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.asMap(Lcom/google/common/collect/ListMultimap;)Ljava/util/Map;
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)

如果启动时报以上的错说明需要导入Google依赖包

        
        
            com.google.guava
            guava
            23.4-jre
        

 pom.xml配置完成。

2、新建SwaggerConfig,位置随便放在applicationContext.xml中扫描路径写对就可以了


@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {
 
	/**
	 * 设置swagger开关
	 */
	@Value("${swagger.is.enable}")
	private boolean swagger_is_enable;
	
	/**
	 * 这是一个接口自动生成器,用来生成接口的文档
	 * @return
	 */
    @Bean
    public Docket myDocket() {
        Docket docket = new         
        Docket(DocumentationType.SWAGGER_2).enable(swagger_is_enable);
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("系统API接口文档")
                .description("前台API接口")
                .contact(new Contact("", "", ""))
                .version("1.1")
                .build();
        docket.apiInfo(apiInfo);
        //设置只生成被Api这个注解注解过的Ctrl类中有ApiOperation注解的api接口的文档
        docket.select().apis(RequestHandlerSelectors.withClassAnnotation((Class) Api.class)).apis(RequestHandlerSelectors.withMethodAnnotation((Class) ApiOperation.class)).build();
        return docket;
    }

}

3、配置applicationContext.xml





 以上三行配置 
如果是boot项目 配置基本上就配置完成,这里不做多写。SSM项目web.xml中springmvc中配置是
mvc
/的配置的也配置完成,启动后可以直接访问http://localhost:8080/swagger-ui.html


4、以下做特殊说明关于SSM项目web.xml中springmvc中配置是

mvc
*.xxx配置的,

用以上配置无法成功,一直弹出Unable to infer base url...

GET http://localhost:8080/xiangmu/swagger-resources/configuration/ui 404 (Not Found)

的配置,(或许有的项目配置的也是*.xxx也可以直接成功,笔者遇见的是本身的项目配置是*.action)笔者在集成的时候就是遇到了一直404的错误,查阅了大量的资后,发现大部分都在说如果不配置成/是无法成功的却没给解决办法,/ 与 *.action 无法进行切换,切换成 / 后项目原路径失效,改动太大,后来找到了一个本地化的方法,弃用swagger-ui原生路径把swagger-ui本地化

如是这种情况略去3步,在applicationContext.xml中添加apidoc/resources路径可随自己设置具体看第5点




5、从https://github.com/swagger-api/swagger-ui 获取其所有的 dist 目录下东西放到需要集成的项目里

SSM项目配置Swagger2(Maven)之web配置springmvc是*.XXX配置,Swagger2本地化_第1张图片

6、并打开复制过来的 index.html,修改 url

写到这的时候发现本地化后这个路径时写死的,不方便大家克隆代码后还要自行修改自己的路径(每个人使用的路径端口号不相同),所以改成了动态获取

SSM项目配置Swagger2(Maven)之web配置springmvc是*.XXX配置,Swagger2本地化_第2张图片

7、在web.xml中新增/v2/api-docs否则无法获取资源


	mvc
	
			org.springframework.web.servlet.DispatcherServlet
	
	
		contextConfigLocation
		/WEB-INF/applicationContext.xml
	

	1

   
      mvc
      *.action
   
   
      mvc
      /v2/api-docs
   

 8、以上就配置成功启动后可以直接访问http://localhost:8080/apidoc/resources/index.html,项目中添加注解这里不过多阐述。

参考文献:https://www.cnblogs.com/hailongchen/p/8262027.html

 

你可能感兴趣的:(项目集成)