SpringMVC5.0.0整合swagger

1.项目中使用到的mvc版本为5.0.0-release, 加入pom.xml依赖如下:

        <!-- 主要是springfox-swagger2和springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>
         <!-- swagger-bootstrap-ui是优化界面doc.html访问 -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.8.5</version>
        </dependency>

2.配置swaggerconfig配置类

@Configuration
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {

    @Bean
    public Docket api() {
        // 创建注解
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //扫描的路径包,设置basePackage会将包下的所有被@Api标记类的所有方法作为api
                .apis(RequestHandlerSelectors.basePackage("com.htw.xxx.wout"))
                //指定路径处理PathSelectors.any()代表所有的路径
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("设置文档标题(API名称)")
                //文档描述
                .description("设置文档标题(API名称)")
                //联系方式
                .contact(new Contact("htw","com.htw.demo","xxxxxxx@qq.com"))
                //版本号
                .version("1.0")
                .build();
    }
    //加入重定向,因为遇到循环调用"/null/swagger-resources/configuration/ui"路径找不到的问题
    //这个网上许多人说是swagger的bug
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController("/null/api-docs",
                "/api-docs").setKeepQueryParams(true);
        registry.addRedirectViewController("/null/swagger-resources/configuration/ui",
                "/swagger-resources/configuration/ui");
        registry.addRedirectViewController("/null/swagger-resources/configuration/security",
                "/swagger-resources/configuration/security");
        registry.addRedirectViewController("/null/swagger-resources", "/swagger-resources");
    }

}

3.调整web.xml文件中映射配置,如果url-pattern配置的是/可以忽略此步骤,本人遇到的情况是.do导致swagger内置的controller无法访问,访问swagger-ui.html页面只出现标题头,没有接口API信息

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
        <!--<url-pattern>*.do</url-pattern>-->
    </servlet-mapping>

4.加入servlet控制指定swagger的配置类、入口controller以及对应的静态资源映射

 <!-- 在启用swagger时,因为需要请求swagger的Controller,所以需要把swagger请求的Controller对应的上层路径springfox.documentation.swagger2加入扫描中 -->
    <context:component-scan base-package="springfox.documentation.swagger2.web" />
    <!-- swagger -->
    <bean class="com.htw.demo.conf.SwaggerConfig"/>
    <!--    swagger2静态资源映射-->
    <mvc:resources mapping="/swagger-ui/**" location="classpath:/META-INF/resources/webjars/springfox-swagger-ui"/>
    <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>

controller的配置文件这里叫:dispatcher-servlet.xml,步骤4中配置就是放在这里

service层对应的配置文件为:spring-*.xml

5.项目中有认证过滤器,或者引入了Shiro等安全框架,一定要将swagger放行

6.启动tomcat,访问地址:http://localhost:9090/myproject/swagger-ui.html或者http://localhost:9090/myproject/doc.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值