基于idea15的SpringMVC集成Swagger(Maven篇)

时间:2022-06-15 20:04:35

对于像我这种web小白,想要集成这个功能又不懂maven走了很多弯路,搜索了很多资料,结果还是搞不得不清不楚,最后还是被我搞明白了。

1.    首先创建maven项目。new project选到maven,勾选create from archetype,然后在下面的项目列找到

org.apache.maven.archetype:maven-archetype-webapp

然后点next,项目名,包名字,一直next到finsh就可以了,在创建的项目中包含一个pom.xml的配置文件。如果本地没有maven的资源库,idea会马上进行自动下载,并且会提示问是否自动加载这些资源,我们选enable就可以了。如果没有选,需要手动完成,则右击pom.xml,找到maven->Reimport,就可以重新加载资源。

2.    配置pom.xml

2.1  配置springmvc的资源库

定义springmvc版本的属性,方便以后修改版本信息

<properties>
<springmvc.version>4.2.5.RELEASE<springmvc.version>
</properties>

添加一对<dependencies>标签,并且在标签内部加入

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springmvc.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springmvc.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${springmvc.version}</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>

当然,如果需要用httprequest这个对象不能少了配置tomcat

<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.8</version>
<scope>provided</scope>
</dependency>

2.2  配置mybatis

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>

2.3  配置swagger

<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>

还需一个仓库

<repositories>
<repository>
<id>jcenter-release</id>
<name>jcenter</name>
<url>http://oss.jfrog.org/artifactory/oss-release-local/</url>
</repository>
</repositories>

3 加入Springmvc项目

            加入自己的springmvc项目,注意非java文件放在src/main/resources目录下,编译后文件会在classpath下,还需要调整springmvc,mybatis文件的引用文件路径。

4加入swagger ui资源

            swaggerui 的资源开源在https://github.com/swagger-api/swagger-ui。下载这个库,把库中的dist文件复制到自己项目中webapp目录下。文件夹名字可以随意修改,但是这个路径就是访问api-docs路径。在dist的目录下找到index.html,打开找到一段代码,把下面这个

url ="http://petstore.swagger.io/v2/swagger.json";

替换成

url ="http://localhost:8080/api-docs";

在src中创建一个swagger配置java类

@Configuration
@EnableWebMvc
@EnableSwagger
@ComponentScan("com.myapp.controllers")
public class MySwaggerConfig {

private SpringSwaggerConfig springSwaggerConfig;

@Autowired
public void setSpringSwaggerConfig(
SpringSwaggerConfig springSwaggerConfig) {
this.springSwaggerConfig = springSwaggerConfig;
}

@Bean //Don't forget the @Bean annotation
public SwaggerSpringMvcPlugin customImplementation(){
return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
.apiInfo(apiInfo())
.includePatterns(".*pet.*");
}

private ApiInfo apiInfo() {
ApiInfo apiInfo = new ApiInfo(
"My Apps API Title",
"My Apps APIDescription",
"My Apps API terms ofservice",
"My Apps API ContactEmail",
"My Apps API LicenceType",
"My Apps API LicenseURL"
);
return apiInfo;
}
}

按照自己的需要它的内容。

然后在springmvc配置文件中引用这个bean。

<bean class="com.xxxx.xxxx.MySwaggerConfig"/>

并且设置html静态资源

<mvc:resourcesmapping="*.html" location="/"/>

5 调整controller forswagger

@Controller
@RequestMapping("/admin")
@Api(value = "admin") //写在contrller的@api注释是swagger用于将api分组,切记不要用中文,否则无法生成出文档
public class UserController {

@RequestMapping(value = "/login",method = RequestMethod.POST)
@ApiOperation(value = "登陆",httpMethod ="POST") //value可以写中文
public String login(@ApiIgnore ModelMap modelMap //@apiignore表示忽略这个参数的输入,当然我们不需要客户端提交这个值
, HttpServletRequest request
, @ApiParam(required = true,value = "用户名")@RequestParam String username
, @ApiParam(required = true,value = "密码")@RequestParam String pwd)
throwsException{
。。。。。。。。代码内容