SSM项目集成Swagger

根据需求我需要在SSM项目中整合Swagger,我这里所用的swagger为2.0以上版本。
1.首先要引入依赖,需要注意的是如果swagger版本与spring版本不匹配,访问swagger可能会报错500,这个时候需要在pom文件中降低swagger版本,或升高spring版本。示例代码:

<!--springfox的核心jar包-->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.6.1</version>
</dependency>
<!--springfox-ui的jar包(里面包含了swagger的界面静态文件)-->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.6.1</version>
</dependency>
   
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
 <groupId>com.fasterxml.jackson.core</groupId>
 <artifactId>jackson-databind</artifactId>
 <version>2.9.0</version>
 <!-- <version>2.9.5</version> -->
</dependency>

<!-- Google的Java常用类库 -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>26.0-jre</version>
</dependency>

<!-- web端静态资源的jar包 -->
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>bootstrap</artifactId>
    <version>3.3.5</version>
</dependency>

2.编写swagger工具类,示例代码:

package com.gx.util;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import io.swagger.annotations.ApiOperation;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/*
 * 重要!如果你的项目引入junit测试,此处需要使用@WebAppConfiguration,如果没有使用junit使用@Configuration
 */
@Configuration
@EnableSwagger2 // 重要!
//@EnableWebMvc
@ComponentScan(basePackages = {
    
     "com.gx.web" }) // 扫描control所在的package请修改为你control所在package
// 如果要访问的话直接访问 http://localhost:8080/项目名称/swagger-ui.html 就可以访问到文档了
public class SwaggerConfig {
    
    
	@Bean
	public Docket api() {
    
    
		return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()//选择哪些路径和API会生成document 
                //扫描指定包中的swagger注解
                //.apis(RequestHandlerSelectors.basePackage("com.gx.web"))
                //扫描所有有注解的api,用这种方式更灵活
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                //扫描所有的api(没有添加注解也可以扫描出来),用这种方式更直接
                //.apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
	}

	/**
	 * 这是匹配api的信息
	 * 
	 * @return
	 */
	private ApiInfo apiInfo() {
    
    
		return new ApiInfoBuilder()
				// 大标题
				.title("API接口文档")
				// 描述
				.description("API接口测试")
				// 版本号
				.version("1.0.0")
				.termsOfServiceUrl("").license("").licenseUrl("").build();
	}
}

3.在springMVC的配置文件中配置swagger,示例代码:

<!--将静态资源交由默认的servlet处理-->
<mvc:default-servlet-handler />
<!--向容器自动注入配置-->
<context:annotation-config />
<!--自动扫描,使springMVC认为包下用了@controller注解的类是控制器-->
<context:component-scan base-package="com.gx.web"/>
<!--重要!将你的SwaggerConfig配置类注入-->
<bean class="com.gx.util.SwaggerConfig"/>
<!--重要!配置swagger资源不被拦截-->
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" />
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/" />

4.修改web.xml文件中的配置,让所有的请求都经DispatcherServlet处理,示例代码:

<servlet-mapping>
   <servlet-name>springMvc</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

5.在controller中添加swagger注解@Api和@ApiOperation,@Api()用于类——表示标识这个类是swagger的资源,@ApiOperation()用于方法——表示一个http请求的操作,示例代码:

@Controller
@RequestMapping("/user")
@Api(value = "用户接口", description = "用户相关api")
public class UserController {
    
    

	@Autowired
	private IUserService userService;

	// 登录页面
	@RequestMapping("/loginsPage")
	@ApiOperation(value = "登录", notes = "后台登录",httpMethod = "GET", response = ModelAndView.class)
	public ModelAndView loginsPage() {
    
    
		ModelAndView mv = new ModelAndView("/login");
		return mv;
	}
}

6.运行项目(我这里使用本地Tomcat运行项目),在浏览器中访问,效果截图:
访问地址:http://localhost:8080/项目名称/swagger-ui.html
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44547592/article/details/108959016