Spring 4.2.2以上版本和swagger集成方案和踩过的坑

因为公司使用的spring版本太高,在集成swagger的时候会存在一些问题,而网上的很多实例大多都是版本比较低的,为了是朋友们少才坑,我这边将集成的过程记录一下:

1. 引入spring、swagger的相关jar包(springfox-swagger2、springfox-swagger-ui),在pom.xml中配置:

Xml代码

io.springfox

springfox-swagger2

2.4.0

org.springframework

spring-core

org.springframework

spring-beans

org.springframework

spring-context

org.springframework

spring-context-support

org.springframework

spring-aop

org.springframework

spring-tx

org.springframework

spring-orm

org.springframework

spring-jdbc

org.springframework

spring-web

org.springframework

spring-webmvc

org.springframework

spring-oxm

io.springfox

springfox-swagger-ui

2.4.0

io.springfox

springfox-swagger2

2.4.0

org.springframework

spring-core

org.springframework

spring-beans

org.springframework

spring-context

org.springframework

spring-context-support

org.springframework

spring-aop

org.springframework

spring-tx

org.springframework

spring-orm

org.springframework

spring-jdbc

org.springframework

spring-web

org.springframework

spring-webmvc

org.springframework

spring-oxm

io.springfox

springfox-swagger-ui

2.4.0

提醒: 特别注意,springfox-swagger2在集成的时候,已经引入了spring的相关jar,特别是spring-context、spring-context-support的版本和项目中使用的版本完全不一致,项目在启动的时候出现很多包冲突的问题,这边在引入pom.xml文件的时候过滤掉了spring的相关jar包,如绿色标志。

2. 编写Swagger的配置类:

Java代码

package com.ml.honghu.swagger.web;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import springfox.documentation.builders.ApiInfoBuilder;

import springfox.documentation.builders.PathSelectors;

import springfox.documentation.builders.RequestHandlerSelectors;

import springfox.documentation.service.ApiInfo;

import springfox.documentation.service.Contact;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableWebMvc

@EnableSwagger2

@Configuration

@ComponentScan(basePackages ={"com.ml.honghu.**.rest"})

publicclass SwaggerConfig {

@Bean

public Docket createRestApi() {

returnnew Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

.select()

.apis(RequestHandlerSelectors.basePackage("com.ml.honghu"))

.paths(PathSelectors.any())

.build();

}

private ApiInfo apiInfo() {

returnnew ApiInfoBuilder()

.title("接口列表 v1.0")

.description("接口信息")

.termsOfServiceUrl("http://honghu.com")

.contact(new Contact("","","HongHu"))

.version("1.1.0")

.build();

}

}

package com.ml.honghu.swagger.web;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import springfox.documentation.builders.ApiInfoBuilder;

import springfox.documentation.builders.PathSelectors;

import springfox.documentation.builders.RequestHandlerSelectors;

import springfox.documentation.service.ApiInfo;

import springfox.documentation.service.Contact;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableWebMvc

@EnableSwagger2

@Configuration

@ComponentScan(basePackages ={"com.ml.honghu.**.rest"})

public class SwaggerConfig {

@Bean

public Docket createRestApi() {

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

.select()

.apis(RequestHandlerSelectors.basePackage("com.ml.honghu"))

.paths(PathSelectors.any())

.build();

}

private ApiInfo apiInfo() {

return new ApiInfoBuilder()

.title("接口列表 v1.0")

.description("接口信息")

.termsOfServiceUrl("http://honghu.com")

.contact(new Contact("", "", "HongHu"))

.version("1.1.0")

.build();

}

}

提醒:注意红色标注的地方

3. 在spring-mvc.xml文件中进行过滤器的配置,过滤掉swagger的相关访问配置:

Java代码

4. 服务配置项

Java代码

@Api("区域服务")

@RestController

@RequestMapping(value ="/rest/area")

publicclass AreaService  {

@Autowired

private AreaService areaService;

@ApiOperation(value ="区域列表", httpMethod ="GET", notes ="区域列表")

@IsLogin

@ResponseBody

@RequestMapping(value ="treeData", method = RequestMethod.GET)

public List> treeData(

@ApiParam(required =true, value ="区域ID")@RequestParam(required=false) String extId, HttpServletResponse response) {

List> mapList = Lists.newArrayList();

List list = areaService.findAll();

for (int i=0; i

Area e = list.get(i);

if (StringUtils.isBlank(extId) || (extId!=null && !extId.equals(e.getId()) && e.getParentIds().indexOf(","+extId+",")==-1)){

Map map = Maps.newHashMap();

map.put("id", e.getId());

map.put("pId", e.getParentId());

map.put("name", e.getName());

mapList.add(map);

}

}

return mapList;

}

}

@Api("区域服务")

@RestController

@RequestMapping(value = "/rest/area")

public class AreaService  {

@Autowired

private AreaService areaService;

@ApiOperation(value = "区域列表", httpMethod = "GET", notes = "区域列表")

@IsLogin

@ResponseBody

@RequestMapping(value = "treeData", method = RequestMethod.GET)

public List> treeData(

@ApiParam(required = true, value = "区域ID")  @RequestParam(required=false) String extId, HttpServletResponse response) {

List> mapList = Lists.newArrayList();

List list = areaService.findAll();

for (int i=0; i

Area e = list.get(i);

if (StringUtils.isBlank(extId) || (extId!=null && !extId.equals(e.getId()) && e.getParentIds().indexOf(","+extId+",")==-1)){

Map map = Maps.newHashMap();

map.put("id", e.getId());

map.put("pId", e.getParentId());

map.put("name", e.getName());

mapList.add(map);

}

}

return mapList;

}

}

4. 启动项目,查看结果:

愿意了解框架技术或者源码的朋友直接求求交流分享技术:3133806896

分布式的一些解决方案,有愿意了解的朋友可以找我们团队探讨

更多详细源码参考来源

时间: 2024-07-30 11:57:50

Spring 4.2.2以上版本和swagger集成方案和踩过的坑的相关文章

Spring Boot拦截器实现并和swagger集成后使用拦截器的配置问题

1. 定义拦截器 LoginInterceptor LoginInterceptor.java是整个登录认证模块中的核心类之一,它实现了HandlerInterceptor类,由它来拦截并过滤到来的每一个请求:它的三个方法能分别作用于每个请求的不同生命周期,你可以根据自己的需要来加入相应的处理逻辑 原文地址:https://www.cnblogs.com/li150dan/p/12072023.html

Spring boot中使用springfox来生成Swagger Specification小结

Rest接口对应Swagger Specification路径获取办法: 根据location的值获取api   json描述文件 也许有同学会问,为什么搞的这么麻烦,api json描述文件不就是http://domain:port/v2/api-docs获取的么. 因为如果使用group,api json描述文件就不是上面的情况哦 https://github.com/springfox/springfox-demos/tree/master/boot-swagger 再小结一下swagge

spring 3以及之后的版本的异步

这里我们来看看spring 3.0 以及以后版本中支持的@Async (方法异步) 其实在之前的程序中也没看到过有使用@Async 的,最近才接触到,想着如果使用异步缓存是不是响应速度会大幅提升那,就比如你去查询,发现缓存中没有数据,你要从数据库中获取数据,然后要把数据放到缓存中然后才能将数据展示到前台,其中将数据放到缓存的这个步骤占用了一部分时间,这样的话前台展示就比较慢了,所以如果保存到缓存这步使用异步处理方式那就可以节省这部分时间,响应速度相对会快一点,哈哈哈 个人理解如果有不对的地方还请

Spring官网下载各版本jar包

1:浏览器输入官网地址:http://spring.io/projects 2:点击如图树叶页面按钮.  3:点击如图小猫图片按钮.  4:查找downloading spring artifacts 链接点击.  5:查找Manually downloading spring distributions 下面的 http://repo.spring.io.链接点击.  6:鼠标点击左边>>符号展开菜单选择Artifacts选项.  7:选择子菜单下的libs-release-local 选项

osgi与流行的框架(spring,struts,hibernate等)的集成

1.与流行的 JAVA B/S体系架构的集成 了解了基于osgi系统设计的基本思想,进一步来研究osgi与流行的框架(spring,struts,hibernate等)的集成,这里首先讲解一下集成原理. l        解决和spring的集成 由于spring的应用占据了大部分的java应用领域,所以解决与spring的集成是osgi必须解决的,spring-dm的推出大大促进了两者的结合,有助于osgi进军企业领域. Spring所带来得好处主要有这么两点: 1.       不需要对外的

初学spring boot踩过的坑

一.搭建spring boot环境 maven工程 pom文件内容 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-

spring+springmvc+kafka分布式消息中间件集成方案

Honghu的消息服务平台已经抛弃了之前的ActiveMQ,改用高吞吐量比较大的Kafka分布式消息中间件方案: kafka消息平台使用spring+kafka的集成方案,详情如下: 1. 使用最高版本2.1.0.RELEASE集成jar包:spring-integration-kafka 2. Zookeeper.Kafka分布式集群使用init.properties配置化方案. Java代码 kafka.servers=127.0.0.1:9092 kafka.topic=xxxooo [j

SpringBoot系列十一:SpringBoot整合Restful架构(使用 RestTemplate 模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别)

1.概念:SpringBoot整合Restful架构 2.背景 Spring 与 Restful 整合才是微架构的核心,虽然在整个 SpringBoot(SpringCloud)之中提供有大量的服务方便整合,但是这些 整合都不如 Rest 重要,因为 Rest 是整个在微架构之中进行通讯的基础模式.那么对于 Rest 首先必须对其有一个最为核心的解释: 利用 JSON 实现数据的交互处理.而且 Spring 里面提供有一个非常强大的 RestTemplate 操作模版,利用此模版可以非常轻松的实

Atitit.mybatis的测试 &#160;以及spring与mybatis在本项目中的集成配置说明

Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明 1.1. Mybatis invoke1 1.2. Spring的数据源配置2 1.3. Mybatis配置文件的位置2 1.1. Mybatis invoke /AtiPlat_train/src/com/attilax/db/mybatisTO91.java @SuppressWarnings("all") public static void main(String[] args) t