SSM框架整合Swagger2(非maven專案者進)
阿新 • • 發佈:2019-02-17
首先網上已經有很多關於springMVC整合swagger2的帖子了,但是本人的專案並不是maven的專案,可能銀行業幹久了,框架什麼的還是比較久,但是我相信國內還是很多專案都還不是maven的專案。(當然會存在歷史問題的專案的嘛)
好了廢話不多說了,下面是關於SSM框架整合swagger2的步驟,希望對大家有所幫助。
1)引入swagger一系列關聯的包,原來的SSM框架的包保留,額外引入下面的包,如果已經存在相應的包就不用重複引入,別以為包多不壓身,會出現包衝突問題的,那時候又要哭去了。2)新增一個包,下面放swagger的一個配置類。此地方我命名為SwaggerConfig.java
注意:com.yusys.swagger.SwaggerConfig為我本地類的包路徑,具體放在什麼地方自己配置。
其中swagger-ui.html對應的location為classpath:/是因為生成的註解檔案會放在根目錄下。4)修改web.xml
下載完成後解壓出來,把dist資料夾下面的所有檔案複製到你當前專案的webContent下面。
6)修改index.html
把js部分的url修改成url: "127.0.0.1:8888/xxxx/v2/api-docs",其中xxxx為你當前專案名。7)在controller層增加swagger的註解,此處只是一個例子。具體api可以檢視swagger的文件
好了廢話不多說了,下面是關於SSM框架整合swagger2的步驟,希望對大家有所幫助。
1)引入swagger一系列關聯的包,原來的SSM框架的包保留,額外引入下面的包,如果已經存在相應的包就不用重複引入,別以為包多不壓身,會出現包衝突問題的,那時候又要哭去了。2)新增一個包,下面放swagger的一個配置類。此地方我命名為SwaggerConfig.java
3)在spring-mvc.xml中增加swaggerConfig的bean,讓它交給spring進行管理。package com.yusys.swagger; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 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; @Configuration //配置註解 @EnableSwagger2 //啟用swagger2 @EnableWebMvc //非springboot框架需要引入 @ComponentScan(basePackages = {"com.yusys.swagger"}) //掃描包 public class SwaggerConfig extends WebMvcConfigurerAdapter{ private String version = "1.0"; @Bean public Docket api(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("business-api") .genericModelSubstitutes(DeferredResult.class) .forCodeGeneration(false) .select()// 選擇哪些路徑和API會生成document .apis(RequestHandlerSelectors.any())// 對所有api進行監控 .paths(PathSelectors.any())// 對所有路徑進行監控 .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo(){ ApiInfo apiInfo = new ApiInfoBuilder() .title("中石化資訊管理系統介面API") .description("中石化資訊管理系統api") .termsOfServiceUrl("127.0.0.1:8888/Sinopec_infomation_system/api-docs") .version(version) .build(); return apiInfo; } }
<!-- 開啟註解功能 --> <mvc:annotation-driven /> <!--將靜態資源交由預設的servlet處理--> <mvc:default-servlet-handler /> <!--向容器自動注入配置--> <context:annotation-config /> < <!-- 將swaggerconfig配置類注入 --> < <bean class="com.yusys.swagger.SwaggerConfig"/> < <mvc:resources mapping="swagger-ui.html" location="classpath:/" /> < <mvc:resources mapping="/webjars/**" location="classpath:/webjars/" />
注意:com.yusys.swagger.SwaggerConfig為我本地類的包路徑,具體放在什麼地方自己配置。
其中swagger-ui.html對應的location為classpath:/是因為生成的註解檔案會放在根目錄下。4)修改web.xml
這個地方必須配置,如果你配置的是*.XXX的形式會出現api-docs訪問出錯,這就會導致swagger-ui找不到api的有效路徑。使swagger無法正常工作。5)下載swagger-ui的檔案,官網https://swagger.io/tools/swagger-ui/<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> < <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> < </servlet-mapping>
下載完成後解壓出來,把dist資料夾下面的所有檔案複製到你當前專案的webContent下面。
6)修改index.html
把js部分的url修改成url: "127.0.0.1:8888/xxxx/v2/api-docs",其中xxxx為你當前專案名。7)在controller層增加swagger的註解,此處只是一個例子。具體api可以檢視swagger的文件
package com.isoftstone.api.customerDept.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.isoftstone.api.common.log.target.SystemControllerLog;
import com.isoftstone.api.common.utils.web.JsonResult;
import com.isoftstone.api.common.utils.web.StatusUtil;
import com.isoftstone.api.customerDept.entity.CustomerDept;
import com.isoftstone.api.customerDept.service.CustomerDeptService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("customerDept")
@Api(value="客戶部門管理",tags="客戶部門管理模組介面Api")
public class CustomerDeptController {
@Autowired
private CustomerDeptService customerDeptService;
@ApiOperation(value="客戶部門資訊建立",notes="客戶部門資訊建立")
@SystemControllerLog(description="客戶部門資訊建立")
@RequestMapping(value="/create",method=RequestMethod.POST)
public JsonResult create(@RequestBody CustomerDept customerDept){
return customerDeptService.create(customerDept);
}
}
8)訪問swagger-ui.html