web工程部分框架信息:spring springmvc swagger springfox maven

参考文档:
https://www.cnblogs.com/exmyth/p/7183753.html
https://www.cnblogs.com/arctictern/p/7498838.html
https://my.oschina.net/wangmengjun/blog/907679
http://springfox.github.io/springfox/docs/current/


pom.xml 对于 swagger-ui 的依赖

        <!-- https://mvnrepository.com/artifact/com.mangofactory/swagger-springmvc -->
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>0.9.5</version>
</dependency> <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency> <!-- 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> <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>2.7.0</version>
</dependency> <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
<version>2.7.0</version>
</dependency> <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.4-jre</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-javadoc-plugin -->
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0</version>
</dependency>

工程结构(仅作为参考)

配置步骤如下:

1、创建 swagger 的配置类(如果要自定义一些内容,请参考官网 API 的描述)

@Configuration      // 这是控制开关
@EnableSwagger2 // 这是用了 swagger2
@EnableWebMvc // 这是因为工程用的 springmvc
@ComponentScan(basePackages = {"controller"}) //这里也许可以不用,暂没去求证
public class SwaggerConfig {
/**
* Every Docket bean is picked up by the swagger-mvc framework - allowing for multiple swagger groups i.e. same code base multiple swagger resource listings.
*/
@Bean
public Docket customDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.select() //select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现
.apis(RequestHandlerSelectors.any()) //扫描指定包内所有Controller定义的Api,并产生文档内容(除了被@ApiIgnore指定的请求)。
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo()); //用来创建该Api的基本信息(这些基本信息会展现在文档页面中)
} private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("Spring-mvc中使用Springfox集成Swagger2构建APIs").build();
} }

2、在 spring-mvc.xml 中添加扫描文件的信息

    <!-- Enables swgger ui -->
<bean class="swagger.swaggerConfig.SwaggerConfig" /> <!-- 这里其实是为了解决静态资源访问的问题, 这是一种解决方式 -->
<mvc:default-servlet-handler/>

3、在 spring-mvc的拦截器做处理,即在 web.xml 中追加

 <!-- springMVC核心配置 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!--spingMVC的配置路径 -->
<param-value>classpath:springmvc/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦截设置 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/swagger-ui.html</url-pattern>
</servlet-mapping> <!--<servlet-mapping>-->
<!--<servlet-name>default</servlet-name>-->
<!--<url-pattern>*.png</url-pattern>-->
<!--</servlet-mapping>--> <!--<servlet-mapping>-->
<!--<servlet-name>default</servlet-name>-->
<!--<url-pattern>*.js</url-pattern>-->
<!--</servlet-mapping>--> <!--<servlet-mapping>-->
<!--<servlet-name>default</servlet-name>-->
<!--<url-pattern>*.css</url-pattern>-->
<!--</servlet-mapping>--> <servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/v2/api-docs</url-pattern>
</servlet-mapping>

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

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

6、再在 spring-mvc.xml 中追加资源映射

    <mvc:resources mapping="*.html" location="apidoc/resources"/>
<mvc:resources mapping="/**" location="apidoc/"/> <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars"/>
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" />

此时 spring-mvc.xml 看起来可能就像这样:


注意下述内容最好保持一致(因为我也没花时间去求解,之前因为一些处理,访问时遇到了"base URL......"吧啦吧啦的模态框)



7、启动运行成功后,访问地址 http://localhost:8080/swagger-ui.html
看起来像这样子:


个人目前对于 swagger 的用途(优缺点)理解

优点

  • 1、不用在 coding 之后再去写接口文档,可以实时同步更新
  • 2、不需要重复造轮子,写解析器(当然定制化的会轻便灵活得多)
  • 3、可以用于后台的 web 接口的快速调试
  • 4、有配套的工具来支撑扩展(见 swagger 的官网 tools 栏目)

缺点

    • 1、有学习成本(如环境配置、注解使用等)
    • 2、可能会和真实开发的工程存在组件的冲突
    • 3、(最明显的)工作量可能会增加,这个需要开发岗的慎重评估。比如非标准的 restful api设计;工程的复杂度设计如 DTO 完全就是对应 BO 时,需要拆成标准的设计;API 编写的工作量受框架约束等等
    • 4、文档界面虽美观,但是阅读性不一定直观
    • 5、没有自研的工具给力,对于测试工程师来说需要考虑使用 swagger 后解决方案
    • 6、工程之间是隔离的

swagger-ui 系统配置过程(基于spring+springmvc+swagger+springfox配置 web-api 管理系统)的更多相关文章

  1. spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式

    spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式[部分内容转载] 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更多 个人分类: 工 ...

  2. idea spring+springmvc+mybatis环境配置整合详解

    idea spring+springmvc+mybatis环境配置整合详解 1.配置整合前所需准备的环境: 1.1:jdk1.8 1.2:idea2017.1.5 1.3:Maven 3.5.2 2. ...

  3. 基于Spring设计并实现RESTful Web Services(转)

    基于Spring设计并实现RESTful Web Services 在本教程中,你将会使用Spring来创建一个具有生产力的RESTful网络服务. 为什么用RESTful网络服务? 从和Amazon ...

  4. Intellij Idea下搭建基于Spring+SpringMvc+MyBatis的WebApi接口架构

    2018-08-16 09:27 更新 强烈推荐使用Springboot来搭建MVC框架! 强烈推荐使用Springboot来搭建MVC框架! 强烈推荐使用Springboot来搭建MVC框架! 后文 ...

  5. 基于Spring+SpringMVC+Mybatis的Web系统搭建

    系统搭建的配置大同小异,本文在前人的基础上做了些许的改动,重写数据库,增加依据权限的动态菜单的实现,也增加了后台返回json格式数据的配置,详细参见完整源码. 主要的后端架构:Spring+Sprin ...

  6. SSM Spring +SpringMVC+Mybatis 整合配置 及pom.xml

    SSM Spring +SpringMVC+Mybatis 配置 及pom.xml SSM框架(spring+springMVC+Mybatis) pom.xml文件 maven下的ssm整合配置步骤

  7. 基于Spring Cloud 几行配置完成单点登录开发

    单点登录概念 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. ...

  8. shiro开发,shiro的环境配置(基于spring+springMVC+redis)

    特别感谢lhacker分享的文章,对我帮助很大 http://www.aiuxian.com/article/p-1913280.html 基本的知识就不在这里讲了,在实战中体会shiro的整体设计理 ...

  9. SpringBoot搭建基于Spring+SpringMvc+Mybatis的REST服务

    Maven Plugin管理 通常,让你的Maven POM文件继承 spring-boot-starter-parent,并声明一个或多个 Starter POMs依赖即可. spring-boot ...

随机推荐

  1. 浅谈nginx简介和应用场景

    简介 nginx是一款轻量级的web服务器,它是由俄罗斯的程序设计师伊戈尔·西索夫所开发. nginx相比于Tomcat性能十分优秀,能够支撑5w的并发连接(而Tomcat只能支撑200-400),并 ...

  2. springcloud——学习

    构建分布式系统 配置管理 服务发现 断路器.路由.微代理.事件总线 全局锁.决策竞选. springCloud是一个微服务框架, 提供多种功能. 底层封装的HttpClinet springCloud ...

  3. 一图一知-NPM&YARN常用命令

  4. Paper Reading:Deep Neural Networks for Object Detection

    发表时间:2013 发表作者:(Google)Szegedy C, Toshev A, Erhan D 发表刊物/会议:Advances in Neural Information Processin ...

  5. okhttp任务调度核心类dispatcher解析

    在之前已经对okhttp的同步和异步请求的流程进行了详细的分析,其中任务调度是由dispatcher来实现的,非常重要,所以这次专门来对它进行一个了解,带着问题去进行探究: Q1:okhttp如何实现 ...

  6. 【小知识】证明 $1$ 到 $n$ 的立方和公式

    scb 发明了小学奥数(确信) Formula \(\sum\limits_{i=1}^n i^3 = (\sum\limits_{i=1}^n i)^2\) Provement 构造一个矩阵 \(a ...

  7. SQL 递归查询,意淫CTE递归的执行步骤

    今天用到了sql的递归查询.递归查询是CTE语句with xx as(....)实现的. 假如表Category数据如下. 我们想查找机枪这个子分类极其层次关系(通过子节点,查询所有层级节点).以下是 ...

  8. JS 时间差计算 XX秒前、XX小时前、XX天前

    //时间差 function GetTime(time) {//di作为一个变量传进来 //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了 var dateBegin = new Date ...

  9. RHEL8 创建本地YUM存储库

    yum 的好处及本地yum的好处不在本文讨论范畴,本文针对rhel8中的新功能yum做简要介绍和配置,在 RHEL 8中分为两个存储库: BaseOS 应用程序流(AppStream) BaseOS中 ...

  10. HTML中dl元素的高度问题

    dl元素通常用来创建一个描述列表,但是在我使用的过程中发现了一个小问题. 定义及用法 在MDN中 <dl> 元素的定义是:一个包含术语定义以及描述的列表,通常用于展示词汇表或者元数据 (键 ...