Spring Boot 集成 swagger-codegen-maven-plugin

一. 目的:

      在微服务的开发过程中,我们需要定义REST接口供开发和测试使用。而Swagger是生成接口的利器,本文主要讲述Spring Boot集成Swagger快速搭建项目以及生成接口的方式。

二. 配置和项目依赖:

1. 示例版本依赖:

 a. Spring Boot采用稳定的release版本  

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.6.RELEASE</version>
        <relativePath/>
    </parent>

b. Swagger采用2.7.0:

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

c. 插件所需相关的依赖(基于JDK11):

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.10.5</version>
        </dependency>

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.0</version>
        </dependency>

2.  plugin的配置:

            <plugin>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-codegen-maven-plugin</artifactId>
                <version>2.3.1</version>
                <executions>
                    <execution>
                        <id>common</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <language>spring</language>
                            <basePackage>${swagger.service.package}</basePackage>
                            <apiPackage>${swagger.service.package}.api</apiPackage>
                            <configPackage>${swagger.service.package}.config</configPackage>
                            <modelPackage>${swagger.service.package}.model</modelPackage>
                            <delegatePackage>${swagger.service.package}.delegate</delegatePackage>
                            <inputSpec>${project.basedir}/src/main/resources/swagger/swagger-input.yml</inputSpec>
                            <output>${project.basedir}/target/generated-sources</output>
                            <templateDirectory>${project.basedir}/src/main/resources/swagger/templates</templateDirectory>
                            <ignoreFileOverride>${project.basedir}/.swagger-codegen-ignore</ignoreFileOverride>
                            <skipOverwrite>false</skipOverwrite>
                            <withXml>true</withXml>
                            <configOptions>
                                <serializableModel>true</serializableModel>
                                <delegatePattern>true</delegatePattern>
                                <useBeanValidation>true</useBeanValidation>
                                <hideGenerationTimestamp>true</hideGenerationTimestamp>
                                <dateLibrary>joda</dateLibrary>
                            </configOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

3. swagger-input.yml(咯), 可以同通过swagger editor 官网编辑生成。

4.  使用mvn compile生成swagger接口相关的代码:

  

 

 

 

5. 添加Delegate的简单实现,便可以运行项目。

 

 

三. 测试:

     运行项目,输入默认的swagger地址便可以访问swagger接口页面:

 四. Swagger线上Disable的配置:

      参考详细文档:How to configure Swagger in spring boot - Coding N Concepts

posted @ 2022-07-12 20:38  梅花瘦  阅读(1729)  评论(1)    收藏  举报