Swagger2與springmvc整合
阿新 • • 發佈:2019-02-13
首先,先構建一個spingmvc的maven工程,這裡就不寫程式碼了。
然後在pom.xml中新增以下依賴:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.6.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> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.7.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.7.4</version> </dependency>
我們來看下我們引入的springfox-swagger-ui-2.6.1.jar:
我們可以看到swagger2的靜態檔案已經被封裝在jar包中了,根據這裡,我們在spring-mvc.xml中來配置我們的檢視解析器:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value="/META-INF/resources/"></property> <property name = "suffix" value = ""></property> </bean>
接下來,我們建立swagger2的配置檔案,和測試的controller
@Configuration //讓Spring來載入該類配置 @EnableWebMvc //啟用Mvc,非springboot框架需要引入註解@EnableWebMvc @EnableSwagger2 //啟用Swagger2 public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()).select() //掃描指定包中的swagger註解 //.apis(RequestHandlerSelectors.basePackage("com.xia.controller")) //掃描所有有註解的api,用這種方式更靈活 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("基礎平臺 RESTful APIs") .description("基礎平臺 RESTful 風格的介面文件,內容詳細極大的減少了前後端的溝通成本,同時確保程式碼與文件保持高度一致,極大的減少維護文件的時間。") .termsOfServiceUrl("http://xiachengwei5.coding.me") .contact("mooc") //.license("個人部落格") //.licenseUrl("http://xiachengwei5.coding.me") .version("0.0.1") .build(); } }
/**
* @Api 這個註解分模組的,記得要用tags
* @author dumingwei
*
*/
@Api(tags="個人業務")
@RestController
@RequestMapping("/person")
public class PersonController {
/**
* @ApiOperation 這個註解是指該方法是用來做什麼的,一定要加上httpMethod,否則會出現一堆
* @param userVo
* @return
*/
@RequestMapping(value="/getPerson",method= RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "個人資訊", produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Person getPersons() {
Person person = new Person();
person.setFirstName("fname");
person.setLastName("lname");
person.setAge(37);
person.setDeptName("dept");
return person;
}
}
}
開啟http://localhost:8080/${projectName}/swagger-ui.html.這裡的projectName就是你的工程名,成功則出現下圖所示: