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

1、pom文件引入jar

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-petstore -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-petstore</artifactId>
            <version>2.7.0</version>
        </dependency>

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

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依赖包

        <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.4-jre</version>
        </dependency>

 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<? extends Annotation>) Api.class)).apis(RequestHandlerSelectors.withMethodAnnotation((Class<? extends Annotation>) ApiOperation.class)).build();
        return docket;
    }

}

3、配置applicationContext.xml

<!-- 加载Swagger2Config -->
<bean class="cn.it.swagger.SwaggerConfig"/>
<mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>

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


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

<servlet-name>mvc</servlet-name>
<url-pattern>*.xxx</url-pattern>配置的,

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

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

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

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

<!-- 加载Swagger2Config -->
<bean class="com.wayboo.utils.SwaggerConfig"/>
<mvc:resources mapping="*.html" location="apidoc/resources"/>
<mvc:resources mapping="/**" location="apidoc/"/>

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

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

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

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

<servlet>
	<servlet-name>mvc</servlet-name>
	<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
	</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</init-param>

	<load-on-startup>1</load-on-startup>
</servlet>
   <servlet-mapping>
      <servlet-name>mvc</servlet-name>
      <url-pattern>*.action</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
      <servlet-name>mvc</servlet-name>
      <url-pattern>/v2/api-docs</url-pattern>
   </servlet-mapping>

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

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值