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 rest endpoint不返回body

如何启用Spring Boot Actuator的所有Endpoints

如何启用Spring Boot Actuator的所有Endpoints

Spring Cloud Alibaba全家桶——Sentinel控制台规则配置

Wireguard 配置文件中的 Endpoint 和 AllowedIPs 字段有啥区别?

CXF配置中 jaxws:endpoint 和 jaxrs:server的区别