Spring 控制器和 Endpoint 的区别
Posted
技术标签:
【中文标题】Spring 控制器和 Endpoint 的区别【英文标题】:Difference between Spring controller and Endpoint 【发布时间】:2016-06-30 16:53:15 【问题描述】:Spring boot actuator 提供了一些端点,例如运行状况、指标、信息。它还允许我们编写自己的自定义端点。
我有一个要求,我需要将一些 Dropwizard 指标统计信息公开为端点。最新的 Spring-boot 确实支持 dropwizard 指标,但它不符合我的要求,所以我计划拥有自己的 Web 端点 /stats
但现在我无法决定它应该是普通的Controller
还是自定义的执行器Endpoint
。这两个术语有什么区别?
PS:问题似乎是基于意见的,但答案应该足够简单。
【问题讨论】:
据我了解(不确定,所以只有评论),Endpoint
是 Spring Boot 中有点“ootb 监控框架”的入口点,包含 HealthIndicator
等类,以及“按原样”不是控制器。通过将Endpoint
设为MvcEndpoint
,可以(!)添加一些控制器功能,因为通过http 提供json 格式数据的概念非常接近@(Rest)Controller
提供的概念。 here 您可以在我认为以及在文档中找到更多见解。希望这有帮助?
【参考方案1】:
端点是控制器的更具体或特殊的版本。
不是依靠视图(例如 JSP)来呈现 html 中的模型数据,端点只是将要写入的数据直接返回到响应的主体(类似于在控制器中执行 @ResponseBody)。
Actuator Endpoint 是更好的选择,原因如下:
-
端点旨在执行在 HTTP 上打印 Object(Json) 的高度特定任务,这正是您想要在此处执行的操作。
将 monitor-n-manage 代码与您的应用程序特定代码分开。
让事物保持清洁和凝聚力
【讨论】:
另一个细微差别:@Endpoints
有时会暴露给 JMX(与 REST 客户端/WebFlux 等相比)@Controller
旨在用于 Spring MVC 世界。以上是关于Spring 控制器和 Endpoint 的区别的主要内容,如果未能解决你的问题,请参考以下文章
如何启用Spring Boot Actuator的所有Endpoints
如何启用Spring Boot Actuator的所有Endpoints
Spring Cloud Alibaba全家桶——Sentinel控制台规则配置