对于像我这种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{
。。。。。。。。代码内容
}
}