欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合Swagger和Actuator的使用教程詳解

 更新時(shí)間:2019年06月18日 09:40:07   作者:虛無(wú)境  
Swagger 是一套基于 OpenAPI 規(guī)范構(gòu)建的開(kāi)源工具,可以幫助我們?cè)O(shè)計(jì)、構(gòu)建、記錄以及使用 Rest API。本篇文章主要介紹的是SpringBoot整合Swagger(API文檔生成框架)和SpringBoot整合Actuator(項(xiàng)目監(jiān)控)使用教程。感興趣的朋友一起看看吧

前言

本篇文章主要介紹的是SpringBoot整合Swagger(API文檔生成框架)和SpringBoot整合Actuator(項(xiàng)目監(jiān)控)使用教程。

SpringBoot整合Swagger

說(shuō)明:如果想直接獲取工程那么可以直接跳到底部,通過(guò)鏈接下載工程代碼。

Swagger 介紹

Swagger 是一套基于 OpenAPI 規(guī)范構(gòu)建的開(kāi)源工具,可以幫助我們?cè)O(shè)計(jì)、構(gòu)建、記錄以及使用 Rest API。Swagger 主要包含了以下三個(gè)部分:

  • Swagger Editor:基于瀏覽器的編輯器,我們可以使用它編寫(xiě)我們 OpenAPI 規(guī)范。
  • Swagger UI:它會(huì)將我們編寫(xiě)的 OpenAPI 規(guī)范呈現(xiàn)為交互式的 API 文檔,后文我將使用瀏覽器來(lái)查看并且操作我們的 Rest API。
  • Swagger Codegen:它可以通過(guò)為 OpenAPI(以前稱(chēng)為 Swagger)規(guī)范定義的任何 API 生成服務(wù)器存根和客戶(hù)端 SDK 來(lái)簡(jiǎn)化構(gòu)建過(guò)程。

Swagger優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 易用性好,Swagger UI提供很好的API接口的UI界面,可以很方面的進(jìn)行API接口的調(diào)用。
  • 時(shí)效性和可維護(hù)性好,API文檔隨著代碼變更而變更。 Swagger是根據(jù)注解來(lái)生成文API檔的,我們可以在變更代碼的時(shí)候順便更改相應(yīng)的注解即可。
  • 易于測(cè)試,可以將文檔規(guī)范導(dǎo)入相關(guān)的工具(例如 SoapUI), 這些工具將會(huì)為我們自動(dòng)地創(chuàng)建自動(dòng)化測(cè)試。

缺點(diǎn)

  • 重復(fù)利用性差,因?yàn)镾wagger畢竟是網(wǎng)頁(yè)打開(kāi),在進(jìn)行接口測(cè)試的時(shí)候很多參數(shù)無(wú)法進(jìn)行保存,因此不易于重復(fù)利用。復(fù)雜的場(chǎng)景不易模擬,比如使用token鑒權(quán)的,可能每次都需要先模擬登錄,再來(lái)進(jìn)行接口調(diào)用。
  • 不過(guò)上述的這些缺點(diǎn)其實(shí)也無(wú)傷大雅,可以配合Postman來(lái)一起使用!
  • Postman可以保存參數(shù)并持久化生成文件,也可以在Header中保存Token信息,也可以動(dòng)態(tài)的生成數(shù)字簽名等等。

如果有興趣的話,可以看看我之前寫(xiě)的這篇文章。

地址: Postman使用教程

Swagger 相關(guān)地址

Swagger官網(wǎng):http://swagger.ioSwagger

GitHub地址:https://github.com/swagger-api

開(kāi)發(fā)準(zhǔn)備

環(huán)境要求

JDK:1.8

SpringBoot:1.5.9.RELEASE

首先還是Maven的相關(guān)依賴(lài):

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倉(cāng)庫(kù)SpringBoot已經(jīng)整合好的Swagger的架包。

application.properties的文件的配置和一般的SpringBoot項(xiàng)目一樣即可。

代碼編寫(xiě)

SpringBoot使用Swagger其實(shí)很簡(jiǎn)單,只需要在啟動(dòng)的時(shí)候添加@EnableSwagger2注解開(kāi)啟,然后再使用@Bean注解初始化一些相應(yīng)的配置即可,比如編輯Swagger UI界面的信息,指定Swagger負(fù)責(zé)掃描的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構(gòu)建RESTful APIs")
   .description("測(cè)試")
   .termsOfServiceUrl("http://www.panchengming.com/")
   .contact("xuwujing")
   .version("1.0")
   .build();
 }
 }

因?yàn)镾wagger主要是用于生成API文檔,因此這里我們可以直接編寫(xiě)控制層的相關(guān)代碼,忽略掉Service層和Dao層相關(guān)的代碼編寫(xiě)。這里我們首先編寫(xiě)一個(gè)實(shí)體類(lèi)。

實(shí)體類(lèi)

又是萬(wàn)能的用戶(hù)表

public class User { 
  private Long id; 
  private String name;
  private Integer age; 
 //getter 和 setter 略
 
 }

Controller 控制層

Swagger主要的使用就是在控制層這塊,它是通過(guò)一些注解來(lái)為接口提供API文檔。下述的代碼中主要使用的注解為這兩個(gè)@ApiOperation@ApiImplicitParam這兩個(gè),@ApiOperation注解來(lái)給API增加說(shuō)明并通過(guò)@ApiImplicitParams注解來(lái)給參數(shù)增加說(shuō)明,其中 value 是標(biāo)題,notes是詳細(xì)說(shuō)明。

下列是Swagger的一些注解說(shuō)明,更詳細(xì)的可以查看官方的wiki文檔。

@Api:將類(lèi)標(biāo)記為Swagger資源。

@ApiImplicitParam:表示API操作中的單個(gè)參數(shù)。

@ApiImplicitParams:一個(gè)包裝器,允許列出多個(gè)ApiImplicitParam對(duì)象。

@ApiModel:提供有關(guān)Swagger模型的其他信息,比如描述POJO對(duì)象。

@ApiModelProperty: 添加和操作模型屬性的數(shù)據(jù)。

@ApiOperation: 描述針對(duì)特定路徑的操作或通常是HTTP方法。

@ApiParam: 為操作參數(shù)添加其他元數(shù)據(jù)。

@ApiResponse: 描述操作的可能響應(yīng)。

@ApiResponses: 一個(gè)包裝器,允許列出多個(gè)ApiResponse對(duì)象。

@Authorization: 聲明要在資源或操作上使用的授權(quán)方案。

@AuthorizationScope: 描述OAuth2授權(quán)范圍。

@ResponseHeader: 表示可以作為響應(yīng)的一部分提供的標(biāo)頭。

@ApiProperty: 描述POJO對(duì)象中的屬性值。@ApiError : 接口錯(cuò)誤所返回的信息...

官方wiki文檔地址:

https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Annotations 

控制層代碼如下:

@RestController
 @RequestMapping(value = "/api")
 public class UserRestController {
 private final Logger logger = LoggerFactory.getLogger(this.getClass());
 @ApiOperation(value="創(chuàng)建用戶(hù)", notes="根據(jù)User對(duì)象創(chuàng)建用戶(hù)")
 @ApiImplicitParam(name = "user", value = "用戶(hù)詳細(xì)實(shí)體user", required = true, dataType = "User")
 @PostMapping("/user")
 public boolean insert(@RequestBody User user) {
  logger.info("開(kāi)始新增用戶(hù)信息!請(qǐng)求參數(shù):{}",user);
  return true;
 }
 @ApiOperation(value="更新用戶(hù)", notes="根據(jù)User對(duì)象更新用戶(hù)")
 @ApiImplicitParam(name = "user", value = "用戶(hù)詳細(xì)實(shí)體user", required = true, dataType = "User")
 @PutMapping("/user")
 public boolean update(@RequestBody User user) {
  logger.info("開(kāi)始更新用戶(hù)信息!請(qǐng)求參數(shù):{}",user);
  return true;
 }
 @ApiOperation(value="刪除用戶(hù)", notes="根據(jù)User對(duì)象刪除用戶(hù)")
 @ApiImplicitParam(name = "user", value = "用戶(hù)詳細(xì)實(shí)體user", required = true, dataType = "User")
 @DeleteMapping("/user")
 public boolean delete(@RequestBody User user) {
  logger.info("開(kāi)始刪除用戶(hù)信息!請(qǐng)求參數(shù):{}",user);
  return true;
 }
 @ApiOperation(value="獲取用戶(hù)列表", notes="根據(jù)User對(duì)象查詢(xún)用戶(hù)信息")
 @ApiImplicitParam(name = "user", value = "用戶(hù)詳細(xì)實(shí)體user", required = true, dataType = "User")
 @GetMapping("/user")
 public User findByUser(User user) {
  logger.info("開(kāi)始查詢(xún)用戶(hù)列表,請(qǐng)求參數(shù):{}",user);
  User user2 =new User();
  user2.setId(1L);
  user2.setAge(18);
  user2.setName("xuwujing");
  return user2;
 }
 }

App 入口

和普通的SpringBoot項(xiàng)目基本一樣。

代碼如下:

 @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程序啟動(dòng)成功!");
 }
 }

功能測(cè)試

我們成功啟動(dòng)該程序之后,在瀏覽器上輸入:http://localhost:8183/swagger-ui.html, 就可以看到Swagger的界面了。

界面的示例圖如下:

由于Swagger的操作主要是在界面操作,因此用圖片會(huì)更加有說(shuō)服力。

使用GET請(qǐng)求測(cè)試示例圖如下:

SpringBoot整合Actuator

說(shuō)明:如果想直接獲取工程那么可以直接跳到底部,通過(guò)鏈接下載工程代碼。

Actuator介紹

從本質(zhì)上講,Actuator為我們的應(yīng)用程序帶來(lái)了生產(chǎn)就緒功能。通過(guò)這種依賴(lài)關(guān)系監(jiān)控我們的應(yīng)用程序,收集指標(biāo),了解流量或數(shù)據(jù)庫(kù)的狀態(tài)變得微不足道。這個(gè)庫(kù)的主要好處是我們可以獲得生產(chǎn)級(jí)工具,而無(wú)需自己實(shí)際實(shí)現(xiàn)這些功能。Actuator主要用于公開(kāi)有關(guān)正在運(yùn)行的應(yīng)用程序的運(yùn)行信息 - 運(yùn)行狀況,指標(biāo),信息,轉(zhuǎn)儲(chǔ),env等。它使用HTTP端點(diǎn)或JMX bean來(lái)使我們能夠與它進(jìn)行交互。一旦這個(gè)依賴(lài)關(guān)系在類(lèi)路徑上,就可以開(kāi)箱即用幾個(gè)端點(diǎn)。與大多數(shù)Spring模塊一樣,我們可以通過(guò)多種方式輕松配置或擴(kuò)展它。

注意事項(xiàng)

Actuator的1.x版本和2.x版本差別很大,本文介紹的是1.x版本。

Actuator現(xiàn)在與技術(shù)無(wú)關(guān),而在1.x中,它與MVC相關(guān)聯(lián),因此與Servlet API相關(guān)聯(lián)。
在2.x中,Actuator定義了它的模型,可插拔和可擴(kuò)展,而不依賴(lài)于MVC。因此,通過(guò)這個(gè)新模型,我們可以利用MVC和WebFlux作為底層Web技術(shù)。
此外,可以通過(guò)實(shí)施正確的適配器來(lái)添加即將到來(lái)的技術(shù)。
最后,JMX仍然支持在沒(méi)有任何其他代碼的情況下公開(kāi)端點(diǎn)。

上述的說(shuō)明參考Actuator官網(wǎng)。

官網(wǎng)地址:

https://www.baeldung.com/spring-boot-actuators

開(kāi)發(fā)準(zhǔn)備

環(huán)境要求

JDK:1.8

SpringBoot:1.5.9.RELEASE

首先還是Maven的相關(guān)依賴(lài):

pom.xml文件如下:

 @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程序啟動(dòng)成功!");
 }
 }

然后就是application.yml的文件配置,這里的配置主要是指定監(jiān)控的端口和路徑以及關(guān)閉安全認(rèn)證等等。

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

代碼編寫(xiě)

其實(shí)這塊不需要代碼的編寫(xiě),因?yàn)樗恍枰阍陧?xiàng)目中添加了該依賴(lài)并進(jìn)行配置之后即可使用。這里我們?cè)趧?chuàng)建一個(gè)普通的SpringBoot項(xiàng)目并且添加了Actuator的相關(guān)依賴(lài),然后通過(guò)調(diào)用Actuator提供的一些接口就可以得知相關(guān)的信息。
這些接口的一些說(shuō)明如下:

1./autoconfig 可以得到配置生效信息

/configprops 可以得到屬性的內(nèi)容和默認(rèn)值/beans 可 以得到bean的別名、類(lèi)型、是否單例、類(lèi)的地址、依賴(lài)等信息/dump 可 以得到線程名、線程ID、線程的狀態(tài)、是否等待鎖資源等信息/env 可以得到環(huán)境變量、JVM 屬性、命令行參數(shù)、項(xiàng)目使用的jar包等信息
5.1 /sun.boot.library.path 可以得到JDK安裝路徑/health 可以得到磁盤(pán)檢測(cè)和數(shù)據(jù)庫(kù)檢測(cè)等信息/mappings 可以得到全部的URI路徑,以及它們和控制器的映射關(guān)系/metrics 可以得到JVM內(nèi)容使用、GC情況、類(lèi)加載信息
8.1 /gc.* 可以得到GC相關(guān)信息
8.2 /mem.* 可以得到內(nèi)存信息 .../info 可以得到自定義的配置信息/shutdown 可以進(jìn)行關(guān)閉程序 post請(qǐng)求/trace 可以得到所Web請(qǐng)求的詳細(xì)信息
12 ....

更多的相關(guān)配置說(shuō)明可以查看官方文檔!

如果通過(guò)通過(guò)接口信息返回的數(shù)據(jù)進(jìn)行查看不夠清晰明了的話,可以結(jié)合SpringCloud Hystrix-Dashboard進(jìn)行轉(zhuǎn)換圖表查看。

具體使用可以參考: SpringCloud學(xué)習(xí)系列之三----- 斷路器(Hystrix)和斷路器監(jiān)控(Dashboard) 這篇文章。

功能測(cè)試

我們成功啟動(dòng)該程序之后,便來(lái)進(jìn)行測(cè)試。

首先查看啟動(dòng)日志,會(huì)發(fā)現(xiàn)啟動(dòng)了兩個(gè)端口,一個(gè)是springboot項(xiàng)目自身的端口,還有一個(gè)Actuator監(jiān)控的端口。

示例圖:

對(duì)外提供的Actuator主要是可以幫助我們獲取一些程序以及一些環(huán)境的相關(guān)信息。

比如獲取程序健康狀態(tài)。

在瀏覽器輸入:

http://localhost:8888/monitor/health

即可查看。

示例圖:

當(dāng)然也可以自定一些程序信息,比如定義程序版本。

在瀏覽器輸入:

http://localhost:8888/monitor/info

示例圖:

其它

項(xiàng)目地址

SpringBoot整合Swagger的項(xiàng)目工程地址:

https://github.com/xuwujing/springBoot-study/tree/master/springboot-swagger

SpringBoot整合Actuator的項(xiàng)目工程地址:

https://github.com/xuwujing/springBoot-study/tree/master/springboot-actuator

SpringBoot整個(gè)集合的地址:

https://github.com/xuwujing/springBoot-study

總結(jié)

以上所述是小編給大家介紹的SpringBoot整合Swagger和Actuator的使用教程詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • mybatis解析xml配置中${xxx}占位符的代碼邏輯

    mybatis解析xml配置中${xxx}占位符的代碼邏輯

    本文主要介紹了mybatis解析xml配置中${xxx}占位符的代碼邏輯,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-05-05
  • Java使用poi包讀取Excel文檔代碼分享

    Java使用poi包讀取Excel文檔代碼分享

    這篇文章主要介紹了Java使用poi包讀取Excel文檔代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Spring?BeanDefinition收集過(guò)程示例詳解

    Spring?BeanDefinition收集過(guò)程示例詳解

    這篇文章主要為大家介紹了Spring?BeanDefinition收集過(guò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Java設(shè)計(jì)模式七大原則之里氏替換原則詳解

    Java設(shè)計(jì)模式七大原則之里氏替換原則詳解

    在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,里氏替換原則(Liskov Substitution principle)是對(duì)子類(lèi)型的特別定義。本文將為大家詳細(xì)介紹Java設(shè)計(jì)模式七大原則之一的里氏替換原則,需要的可以參考一下
    2022-02-02
  • Java異步判斷線程池所有任務(wù)是否執(zhí)行完成的操作方法

    Java異步判斷線程池所有任務(wù)是否執(zhí)行完成的操作方法

    這篇文章主要介紹了Java異步判斷線程池所有任務(wù)是否執(zhí)行完成的方法,在這個(gè)示例中,我使用了傳統(tǒng)的匿名內(nèi)部類(lèi)來(lái)創(chuàng)建Callable任務(wù)(同時(shí)也提供了Lambda表達(dá)式的注釋?zhuān)?以便與各種Java版本兼容,需要的朋友可以參考下
    2024-07-07
  • 詳解Spring AOP 攔截器的基本實(shí)現(xiàn)

    詳解Spring AOP 攔截器的基本實(shí)現(xiàn)

    本篇文章主要介紹了詳解Spring AOP 攔截器的基本實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Java基礎(chǔ)之TreeMap詳解

    Java基礎(chǔ)之TreeMap詳解

    這篇文章主要介紹了Java基礎(chǔ)之TreeMap詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringBoot實(shí)現(xiàn)異步消息處理的代碼示例

    SpringBoot實(shí)現(xiàn)異步消息處理的代碼示例

    在現(xiàn)代應(yīng)用程序中,異步消息處理是一項(xiàng)至關(guān)重要的任務(wù)。它可以提高應(yīng)用程序的性能、可伸縮性和可靠性,同時(shí)也可以提供更好的用戶(hù)體驗(yàn),本文將介紹如何使用Spring Boot實(shí)現(xiàn)異步消息處理,并提供相應(yīng)的代碼示例
    2023-06-06
  • 在IDEA中創(chuàng)建Web項(xiàng)目的詳細(xì)過(guò)程

    在IDEA中創(chuàng)建Web項(xiàng)目的詳細(xì)過(guò)程

    這篇文章主要給大家介紹了關(guān)于在IDEA中創(chuàng)建Web項(xiàng)目的詳細(xì)過(guò)程,很多朋友可能在學(xué)習(xí)java基礎(chǔ)的時(shí)候已經(jīng)熟練掌握了IDEA創(chuàng)建java項(xiàng)目的基本步驟,但隨著學(xué)習(xí)技術(shù)的不斷深入,不同的IDEA版本可能在項(xiàng)目的創(chuàng)建頁(yè)面上出現(xiàn)些許的出入,需要的朋友可以參考下
    2023-10-10
  • Spring?WebFlux怎么進(jìn)行異常處理源碼解析

    Spring?WebFlux怎么進(jìn)行異常處理源碼解析

    這篇文章主要為大家介紹了Spring?WebFlux怎么進(jìn)行異常處理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論