SpringBoot actuator(自定義端點類)
1、編寫自動端點類很簡單,只需要在類前面使用@Endpoint注解
EndPoint中id 來表示url路徑
2、使用@ReadOperation //顯示監控指標
3、使用@WriteOperation //動態修改指標,以post方式修改
示例如下:
package com.caicai.springboot.study.EndPoint; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.boot.actuate.endpoint.annotation.WriteOperation; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.logging.SimpleFormatter; /* * 自定義端點類 * @Endpoint //表示這是一個自定義事件端點類 * Endpoint 中有一個id //它是設置端點的URL路徑 * */ @Endpoint(id="datetime") //端點路徑不要與系統自帶的重合 public class DateTimeEndpoint { //一般端點都是對象,或者一個json返回的格式,所以通常我們會將端點定義一個MAP的返回形式 // 通過ReadOperation //訪問地址是根據前綴+ endpoint 的ID // /Springboot-caicai/actuator/datetime private String format = "yyyy-MM-dd HH:mm:ss"; @ReadOperation //顯示監控指標 public Map<String,Object> info(){ Map<String,Object> info = new HashMap<>(); info.put("name","caicia"); info.put("address","幸福路1號"); info.put("datetime",new SimpleDateFormat(format).format(new Date())); return info; } //動態修改指標 @WriteOperation //動態修改指標,是以post方式修改 public void setFormat(String format){ this.format = format; } }
4、動態修改參數,需要配置自定義配置類
使用四個注解
@Configuration //表示該類是配置類
@Bean//表示配置類為Spring boot 一個應用bean
@ConditionalOnMissingBean //條件注解1:表示當前bean缺少的時候才會注入bean
@ConditionalOnEnabledEndpoint //條件注解2:表示當監控端點被開啟的時候,才會將自定義的類注入到程序應用中
package com.caicai.springboot.study.EndPoint; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /* * 自定義端點配置類 * * */ @Configuration //表示該類是配置類 public class EndPointConfig { @Bean//表示配置類為Spring boot 一個應用bean @ConditionalOnMissingBean //條件注解1:表示當前bean缺少的時候才會注入bean @ConditionalOnEnabledEndpoint //條件注解2:表示當監控端點被開啟的時候,才會將自定義的類注入到程序應用中 public DateTimeEndpoint dateTimeEndpoint(){ return new DateTimeEndpoint(); } }
測試結果:
訪問地址:
http://127.0.0.1:8080/Springboot-caicai/actuator/datetime
沒修該之前時間的值:
使用POST方式進行修改
返回是正常的
最后我們GET一下實際的結果值