日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot Actuator:自定义端点,其顶部具有MVC层

發布時間:2023/12/3 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot Actuator:自定义端点,其顶部具有MVC层 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring Boot Actuator端點允許您監視應用程序并與之交互。 Spring Boot包含許多內置端點,您也可以添加自己的端點。
添加自定義端點就像創建一個從org.springframework.boot.actuate.endpoint.AbstractEndpoint擴展的類一樣容易。 但是Spring Boot Actuator也提供了用MVC層裝飾端點的可能性。

端點端點

有許多內置端點,但是缺少一個端點是公開所有端點的端點。 默認情況下,終結點通過HTTP公開,其中終結點的ID映射到URL。 在下面的示例中,創建了具有ID endpoints的新端點,并且其invoke方法返回所有可用端點:

@Component public class EndpointsEndpoint extends AbstractEndpoint<List<Endpoint>> {private List<Endpoint> endpoints;@Autowiredpublic EndpointsEndpoint(List<Endpoint> endpoints) {super("endpoints");this.endpoints = endpoints;}@Overridepublic List<Endpoint> invoke() {return endpoints;} }

@Component注釋將端點添加到現有端點列表中。 /endpoints URL現在將公開所有具有id , enabled和sensitive屬性的端點:

[{"id": "trace","sensitive": true,"enabled": true},{"id": "configprops","sensitive": true,"enabled": true} ]

新端點還將作為MBean在JMX服務器上注冊: [org.springframework.boot:type=Endpoint,name=endpointsEndpoint]

MVC端點

Spring Boot Actuator提供了一項附加功能,該功能是通過org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint接口在終結點之上的MVC層的策略 。 MvcEndpoint可以使用@RequestMapping和其他Spring MVC功能。

請注意, EndpointsEndpoint返回所有可用的端點。 但是,如果用戶可以通過其enabled sensitive屬性過濾端點,那就太好了。

MvcEndpoint必須使用有效的@RequestMapping方法創建一個新的MvcEndpoint 。 請注意,不允許在類級別使用@Controller和@RequestMapping ,因此使用@Component來使端點可用:

@Component public class EndpointsMvcEndpoint extends EndpointMvcAdapter {private final EndpointsEndpoint delegate;@Autowiredpublic EndpointsMvcEndpoint(EndpointsEndpoint delegate) {super(delegate);this.delegate = delegate;}@RequestMapping(value = "/filter", method = RequestMethod.GET)@ResponseBodypublic Set<Endpoint> filter(@RequestParam(required = false) Boolean enabled,@RequestParam(required = false) Boolean sensitive) {} }

新方法將在/endpoints/filter URL下可用。 該方法的實現很簡單:它獲取可選的enabled sensitive參數,并過濾委托的invoke方法結果:

@RequestMapping(value = "/filter", method = RequestMethod.GET) @ResponseBody public Set<Endpoint> filter(@RequestParam(required = false) Boolean enabled,@RequestParam(required = false) Boolean sensitive) { Predicate<Endpoint> isEnabled =endpoint -> matches(endpoint::isEnabled, ofNullable(enabled));Predicate<Endpoint> isSensitive =endpoint -> matches(endpoint::isSensitive, ofNullable(sensitive));return this.delegate.invoke().stream().filter(isEnabled.and(isSensitive)).collect(toSet()); }private <T> boolean matches(Supplier<T> supplier, Optional<T> value) {return !value.isPresent() || supplier.get().equals(value.get()); }

用法示例:

  • 所有啟用的端點: /endpoints/filter?enabled=true
  • 所有敏感端點: /endpoints/filter?sensitive=true
  • 所有已啟用和敏感的端點: /endpoints/filter?enabled=true&sensitive=true

使端點可發現

EndpointsMvcEndpoint使用MVC功能,但仍返回純終結點對象。 如果Spring HATEOAS在類路徑中,則可以擴展filter方法以返回org.springframework.hateoas.Resource以及指向端點的鏈接:

class EndpointResource extends ResourceSupport {private final String managementContextPath;private final Endpoint endpoint;EndpointResource(String managementContextPath, Endpoint endpoint) {this.managementContextPath = managementContextPath;this.endpoint = endpoint;if (endpoint.isEnabled()) {UriComponentsBuilder path = fromCurrentServletMapping().path(this.managementContextPath).pathSegment(endpoint.getId());this.add(new Link(path.build().toUriString(), endpoint.getId())); }}public Endpoint getEndpoint() {return endpoint;} }

EndpointResource將包含指向每個已啟用端點的鏈接。 請注意,構造函數采用managamentContextPath變量。 該變量包含一個Spring Boot Actuator management.contextPath屬性值。 用于設置管理端點的前綴。

EndpointsMvcEndpoint類中所需的更改:

@Component public class EndpointsMvcEndpoint extends EndpointMvcAdapter {@Value("${management.context-path:/}") // default to '/'private String managementContextPath;@RequestMapping(value = "/filter", method = RequestMethod.GET)@ResponseBodypublic Set<Endpoint> filter(@RequestParam(required = false) Boolean enabled,@RequestParam(required = false) Boolean sensitive) {// predicates declarationsreturn this.delegate.invoke().stream().filter(isEnabled.and(isSensitive)).map(e -> new EndpointResource(managementContextPath, e)).collect(toSet());} }

我的Chrome瀏覽器中安裝了JSON Formatter的結果:

但是,為什么不直接從EndpointsEnpoint返回資源呢? 在EndpointResource了從HttpServletRequest中提取信息的UriComponentsBuilder ,它將在調用MBean的getData操作時引發異常(除非不需要JMX)。

管理端點狀態

端點不僅可以用于監視,還可以用于管理。 已經有內置的ShutdownEndpoint (默認情況下禁用),可以關閉ApplicationContext 。 在以下(假設的)示例中,用戶可以更改所選端點的狀態:

@RequestMapping(value = "/{endpointId}/state") @ResponseBody public EndpointResource enable(@PathVariable String endpointId) {Optional<Endpoint> endpointOptional = this.delegate.invoke().stream().filter(e -> e.getId().equals(endpointId)).findFirst();if (!endpointOptional.isPresent()) {throw new RuntimeException("Endpoint not found: " + endpointId);}Endpoint endpoint = endpointOptional.get(); ((AbstractEndpoint) endpoint).setEnabled(!endpoint.isEnabled());return new EndpointResource(managementContextPath, endpoint); }

呼叫disabled端點用戶時,應收到以下響應:

{"message": "This endpoint is disabled" }

更進一步

下一步可能是為自定義(或現有)端點添加用戶界面,但這不在本文討論范圍之內。 如果您有興趣,可以看看Spring Boot Admin ,它是Spring Boot應用程序的簡單管理界面。

摘要

Spring Boot Actuator 提供了Spring Boot的所有生產就緒功能以及許多內置端點。 只需花費很少的精力,即可添加自定義端點,以擴展應用程序的監視和管理功能。

參考文獻

  • http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready

翻譯自: https://www.javacodegeeks.com/2014/10/spring-boot-actuator-custom-endpoint-with-mvc-layer-on-top-of-it.html

總結

以上是生活随笔為你收集整理的Spring Boot Actuator:自定义端点,其顶部具有MVC层的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 嫩草国产在线 | 国产成人亚洲精品无码h在线 | 色屁屁一区二区 | 亚洲色成人www永久在线观看 | 国产又爽又黄无码无遮挡在线观看 | 亚洲自拍网站 | 亚洲中文一区二区 | 久一久久 | 偷拍超碰| 在线看免费毛片 | 天天狠天天插 | 久久久久久久久国产 | 91在线免费看片 | 日韩黄色片子 | 黄色午夜视频 | 欧美日韩在线播放视频 | 国产初高中真实精品视频 | 黄色在线观看网址 | 国产日产欧美一区二区 | 久久天堂影院 | 午夜免费福利视频 | 日本高清免费不卡视频 | 国产又大又黄视频 | 久操不卡 | 成人免费看毛片 | 在厨房拨开内裤进入毛片 | 国产精品久久久久久亚洲av | youjizz视频 | 精彩视频一区二区三区 | 素人一区二区三区 | 国产精品蜜 | 婷婷狠狠爱 | 国产精品aⅴ | 久久久久亚洲日日精品 | 免费a网| 91国产在线免费观看 | 肉丝肉足丝袜一区二区三区 | 日韩欧美国产成人精品免费 | 一区二区免费在线播放 | 美女在线一区 | 久久天堂视频 | 黄网www | 久久久久久av无码免费网站 | 色无极亚洲色图 | 国产美女一级片 | 国产91精品欧美 | 91网在线播放 | 久久夜色精品国产欧美乱极品 | 午夜在线视频观看 | 日韩成人免费在线视频 | 黄网免费视频 | 国产伦精品一区二区三区高清版 | 国产精品久久久久久久久晋中 | 日韩中文字幕一区二区三区四区 | 无码aⅴ精品一区二区三区 精品久久在线 | 精品成人av一区二区在线播放 | 亚洲视频五区 | 中文字幕第28页 | 四虎免费在线观看 | 一区二区三区高清不卡 | 人妻无码久久一区二区三区免费 | 91小视频| 国产视频二区 | 卡一卡二在线视频 | 日本道中文字幕 | 公侵犯人妻一区二区三区 | 国产免费一区二区三区网站免费 | www久久 | 自拍偷拍亚洲区 | 九九九九久久久久 | zzjizzji亚洲日本少妇 | 无码人妻丰满熟妇啪啪 | 欧美成人vr18sexvr| 制服丝袜av在线播放 | 国产情侣激情 | 亚洲精品在线免费观看视频 | 亚洲精品9999 | 欧美成人精精品一区二区频 | 丝袜一区二区三区 | 玖草视频在线观看 | 欧美日韩视频免费观看 | 91蝌蚪视频在线观看 | 欧美中字 | 欧美黄色录像带 | 亚洲欧美高清视频 | 日韩免费av网站 | 成人精品亚洲人成在线 | 男人吃奶视频 | 色婷婷麻豆 | 91尤物视频在线观看 | 99视频99| 久久精品国产成人av | 小泽玛利亚一区二区三区视频 | 69看片| 国产精品无码永久免费不卡 | 亚洲电影在线观看 | 黄色精品一区 | 麻豆一区二区三区四区 | 玖玖网|