本篇文章主要介紹的是SpringBoot整合Swagger(API文檔生成框架)和SpringBoot整合Actuator(項目監控)使用教程。html
說明:若是想直接獲取工程那麼能夠直接跳到底部,經過連接下載工程代碼。java
Swagger 是一套基於 OpenAPI 規範構建的開源工具,能夠幫助咱們設計、構建、記錄以及使用 Rest API。Swagger 主要包含了如下三個部分:git
不過上述的這些缺點其實也無傷大雅,能夠配合Postman來一塊兒使用! Postman能夠保存參數並持久化生成文件,也能夠在Header中保存Token信息,也能夠動態的生成數字簽名等等。 若是有興趣的話,能夠看看我以前寫的這篇文章。 地址: Postman使用教程github
環境要求web
JDK:1.8spring
SpringBoot:1.5.9.RELEASE數據庫
首先仍是Maven的相關依賴:api
pom.xml文件以下:瀏覽器
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>test</scope>
</dependency>
<!-- swagger RESTful API -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
複製代碼
注: Swagger的jar包既可原生的 Swagger的架包,也能夠選擇maven倉庫SpringBoot已經整合好的Swagger的架包。安全
application.properties
的文件的配置和通常的SpringBoot項目同樣便可。
SpringBoot使用Swagger其實很簡單,只須要在啓動的時候添加@EnableSwagger2
註解開啓,而後再使用@Bean
註解初始化一些相應的配置便可,好比編輯Swagger UI界面的信息,指定Swagger負責掃描的package等等。
Swagger代碼配置以下:
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.pancm"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot中使用Swagger2構建RESTful APIs")
.description("測試")
.termsOfServiceUrl("http://www.panchengming.com/")
.contact("xuwujing")
.version("1.0")
.build();
}
}
複製代碼
由於Swagger主要是用於生成API文檔,所以這裏咱們能夠直接編寫控制層的相關代碼,忽略掉Service層和Dao層相關的代碼編寫。這裏咱們首先編寫一個實體類。
實體類
又是萬能的用戶表
public class User {
private Long id;
private String name;
private Integer age;
//getter 和 setter 略
}
複製代碼
Controller 控制層
Swagger主要的使用就是在控制層這塊,它是經過一些註解來爲接口提供API文檔。下述的代碼中主要使用的註解爲這兩個@ApiOperation
和 @ApiImplicitParam
這兩個,@ApiOperation
註解來給API增長說明並經過@ApiImplicitParams
註解來給參數增長說明,其中 value
是標題,notes
是詳細說明。
下列是Swagger的一些註解說明,更詳細的能夠查看官方的wiki文檔。
官方wiki文檔地址: github.com/swagger-api…
控制層代碼以下:
@RestController
@RequestMapping(value = "/api")
public class UserRestController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@ApiOperation(value="建立用戶", notes="根據User對象建立用戶")
@ApiImplicitParam(name = "user", value = "用戶詳細實體user", required = true, dataType = "User")
@PostMapping("/user")
public boolean insert(@RequestBody User user) {
logger.info("開始新增用戶信息!請求參數:{}",user);
return true;
}
@ApiOperation(value="更新用戶", notes="根據User對象更新用戶")
@ApiImplicitParam(name = "user", value = "用戶詳細實體user", required = true, dataType = "User")
@PutMapping("/user")
public boolean update(@RequestBody User user) {
logger.info("開始更新用戶信息!請求參數:{}",user);
return true;
}
@ApiOperation(value="刪除用戶", notes="根據User對象刪除用戶")
@ApiImplicitParam(name = "user", value = "用戶詳細實體user", required = true, dataType = "User")
@DeleteMapping("/user")
public boolean delete(@RequestBody User user) {
logger.info("開始刪除用戶信息!請求參數:{}",user);
return true;
}
@ApiOperation(value="獲取用戶列表", notes="根據User對象查詢用戶信息")
@ApiImplicitParam(name = "user", value = "用戶詳細實體user", required = true, dataType = "User")
@GetMapping("/user")
public User findByUser(User user) {
logger.info("開始查詢用戶列表,請求參數:{}",user);
User user2 =new User();
user2.setId(1L);
user2.setAge(18);
user2.setName("xuwujing");
return user2;
}
}
複製代碼
App 入口
和普通的SpringBoot項目基本同樣。
代碼以下:
@SpringBootApplication
public class SwaggerApplication {
private static final Logger logger = LoggerFactory.getLogger(SwaggerApplication.class);
public static void main(String[] args) {
SpringApplication.run(SwaggerApplication.class, args);
logger.info("Swagger程序啓動成功!");
}
}
複製代碼
咱們成功啓動該程序以後,在瀏覽器上輸入:http://localhost:8183/swagger-ui.html
, 就能夠看到Swagger的界面了。
界面的示例圖以下:
因爲Swagger的操做主要是在界面操做,所以用圖片會更加有說服力。
使用GET請求測試示例圖以下:
說明:若是想直接獲取工程那麼能夠直接跳到底部,經過連接下載工程代碼。
從本質上講,Actuator爲咱們的應用程序帶來了生產就緒功能。經過這種依賴關係監控咱們的應用程序,收集指標,瞭解流量或數據庫的狀態變得微不足道。這個庫的主要好處是咱們能夠得到生產級工具,而無需本身實際實現這些功能。Actuator主要用於公開有關正在運行的應用程序的運行信息 - 運行情況,指標,信息,轉儲,env等。它使用HTTP端點或JMX bean來使咱們可以與它進行交互。一旦這個依賴關係在類路徑上,就能夠開箱即用幾個端點。與大多數Spring模塊同樣,咱們能夠經過多種方式輕鬆配置或擴展它。
Actuator的1.x版本和2.x版本差異很大,本文介紹的是1.x版本。
Actuator如今與技術無關,而在1.x中,它與MVC相關聯,所以與Servlet API相關聯。 在2.x中,Actuator定義了它的模型,可插拔和可擴展,而不依賴於MVC。所以,經過這個新模型,咱們能夠利用MVC和WebFlux做爲底層Web技術。 此外,能夠經過實施正確的適配器來添加即將到來的技術。 最後,JMX仍然支持在沒有任何其餘代碼的狀況下公開端點。
上述的說明參考Actuator官網。
官網地址: www.baeldung.com/spring-boot…
環境要求
JDK:1.8
SpringBoot:1.5.9.RELEASE
首先仍是Maven的相關依賴:
pom.xml文件以下:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>test</scope>
</dependency>
</dependencies>
複製代碼
而後就是application.yml的文件配置,這裏的配置主要是指定監控的端口和路徑以及關閉安全認證等等。
application.yml:
server:
port: 8181
management:
security:
enabled: false
port: 8888
context-path: /monitor
endpoints:
shutdown:
enabled: true
info:
app:
name:springboot-actuator
version:1.0
複製代碼
其實這塊不須要代碼的編寫,由於它只須要你在項目中添加了該依賴並進行配置以後便可使用。這裏咱們在建立一個普通的SpringBoot項目而且添加了Actuator的相關依賴,而後經過調用Actuator提供的一些接口就能夠得知相關的信息。 這些接口的一些說明以下:
1./autoconfig 能夠獲得配置生效信息 2. /configprops 能夠獲得屬性的內容和默認值 3. /beans 可 以獲得bean的別名、類型、是否單例、類的地址、依賴等信息 4. /dump 可 以獲得線程名、線程ID、線程的狀態、是否等待鎖資源等信息 5. /env 能夠獲得環境變量、JVM 屬性、命令行參數、項目使用的jar包等信息 5.1 /sun.boot.library.path 能夠獲得JDK安裝路徑 6. /health 能夠獲得磁盤檢測和數據庫檢測等信息 7. /mappings 能夠獲得所有的URI路徑,以及它們和控制器的映射關係 8. /metrics 能夠獲得JVM內容使用、GC狀況、類加載信息 8.1 /gc.* 能夠獲得GC相關信息 8.2 /mem.* 能夠獲得內存信息 ... 9. /info 能夠獲得自定義的配置信息 10. /shutdown 能夠進行關閉程序 post請求 11. /trace 能夠獲得所Web請求的詳細信息 12 ....
更多的相關配置說明能夠查看官方文檔! 若是經過經過接口信息返回的數據進行查看不夠清晰明瞭的話,能夠結合SpringCloud Hystrix-Dashboard進行轉換圖表查看。 具體使用能夠參考: SpringCloud學習系列之三----- 斷路器(Hystrix)和斷路器監控(Dashboard) 這篇文章。
咱們成功啓動該程序以後,便來進行測試。
首先查看啓動日誌,會發現啓動了兩個端口,一個是springboot項目自身的端口,還有一個Actuator監控的端口。
示例圖:
對外提供的Actuator主要是能夠幫助咱們獲取一些程序以及一些環境的相關信息。
好比獲取程序健康狀態。 在瀏覽器輸入:
便可查看。
示例圖:
固然也能夠自定一些程序信息,好比定義程序版本。
在瀏覽器輸入:
示例圖:
SpringBoot整合Swagger的項目工程地址: github.com/xuwujing/sp…
SpringBoot整合Actuator的項目工程地址: github.com/xuwujing/sp…
SpringBoot整個集合的地址: github.com/xuwujing/sp…
原創不易,若是感受不錯,但願給個推薦!您的支持是我寫做的最大動力! 版權聲明: 做者:虛無境 博客園出處:www.cnblogs.com/xuwujing CSDN出處:blog.csdn.net/qazwsxpcm 我的博客出處:www.panchengming.com