Spring Boot 注解方式自定义Endpoint详解

 更新时间:2021年09月28日 15:43:04   作者:LightOfMiracle  
这篇文章主要介绍了Spring Boot注解方式自定义Endpoint详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

概述

在使用Spring Boot的时候我们经常使用actuator,健康检查,bus中使用/refresh等。这里记录如何使用注解的方式自定义Endpoint。可用于满足一些服务状态监控,或者优雅停机等。

准备

Spring Boot项目,pom中加入:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

编写自定义Endpoint

@Configuration
@Endpoint(id = "my-endpoint")
public class MyEndpoint {
 
    @ReadOperation
    public Map<String, Object> endpoint() {
        Map<String, Object> map = new HashMap<>(16);
        map.put("message", "this is my endpoint");
        return map;
    }
}

配置

management.endpoints.web.exposure.include=my-endpoint

启动&测试

启动后可以看到日志:

Mapped "{[/actuator/my-endpoint],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)

注意

  • @EndPoint中的id不能使用驼峰法,需要以-分割
  • @Spring Boot会去扫描@EndPoint注解下的@ReadOperation, @WriteOperation, @DeleteOperation注解,分别对应生成Get/Post/Delete的Mapping。注解中有个produces参数,可以指定media type, 如:application/json等。

Spring Boot 常用endpoint的使用

Actuator

目的

  • 监控并管理应用程序

监控:让我们去发现和了解程序的运行状况各种指标

管理:比如说通过Actuator去做一个shutdown功能,通过访问一个特定的url去操作,默认是不开启的,另外 还可以在运行的过程中 对日志进行调整

访问方式

  • HTTP
  • JMX

默认 会把更多的 Actuator 暴露在JMX上面

依赖

  • spring-boot-starter-actuator

一些常用 Endpoint

只有health和info 默认是可以通过http 进行访问的

  • shutdown 是默认不开启的一个
  • threaddump 去看线程情况
  • Prometheus 虽然是默认开启 但是 必须在pom文件上加入相关依赖 才能提供支持

如何访问 Actuator Endpoint

HTTP 访问

  • /actuator/<id >

端口与路径

  • management.server.address=

Actuator Endpoint 发布的地址

  • management.server.port=

Actuator Endpoint 发布的端口号

  • management.endpoints.web.base-path=/actuator

自定义端口

  • management.endpoints.web.path-mapping.<id>=路径

修改端点的访问路径(映射),端点默认使用的是它的 值

开启 Endpoint

  • management.endpoint.<id>.enabled=true

开启名为id的 Endpoint

  • management.endpoints.enabled-by-default=false

端点启用是选择性加入而不是选择性排除。表示禁用了所有端点

暴露 Endpoint

  • management.endpoints.jmx.exposure.exclude=

jmx方式排除需要公开的端点

  • management.endpoints.jmx.exposure.include=*

jmx方式包含需要公开的端点

  • management.endpoints.web.exposure.exclude=

http方式排除需要公开的端点

  • management.endpoints.web.exposure.include=info, health

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringCloud的Config配置中心详解

    SpringCloud的Config配置中心详解

    这篇文章主要介绍了SpringCloud的Config配置中心详解,SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置,需要的朋友可以参考下
    2023-07-07
  • 解决springcloud中Feign导入依赖为unknow的情况

    解决springcloud中Feign导入依赖为unknow的情况

    这篇文章主要介绍了解决springcloud中Feign导入依赖为unknow的情况,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java8新特性Optional常用方法

    Java8新特性Optional常用方法

    optional类是Java8新增加的一个对象容器,主要的功能有对象的创建、获取、判断、过滤,映射等,下面这篇文章主要给大家介绍了关于Java8新特性Optional常用方法的相关资料,需要的朋友可以参考下
    2024-02-02
  • 深入理解java的异常情况

    深入理解java的异常情况

    在本篇文章里小编给大家分享了关于Java的异常类型的相关知识点内容,有需要的朋友们跟着学习下,希望能够给你带来帮助
    2021-09-09
  • java发送邮件示例讲解

    java发送邮件示例讲解

    这篇文章主要为大家详细介绍了java发送邮件示例的全过程,温习邮件协议,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • SpringBoot配置使Mybatis打印SQL执行时的实际参数值操作

    SpringBoot配置使Mybatis打印SQL执行时的实际参数值操作

    这篇文章主要介绍了SpringBoot配置使Mybatis打印SQL执行时的实际参数值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Java中接口和抽象类的区别与相同之处

    Java中接口和抽象类的区别与相同之处

    这篇文章主要介绍了Java中接口和抽象类的区别与相同之处,本文讲解了抽象类的概念、接口的概念、接口和抽象类的区别与联系等内容,需要的朋友可以参考下
    2015-06-06
  • 深入了解Java中的过滤器Filter和监听器Listener

    深入了解Java中的过滤器Filter和监听器Listener

    这篇文章主要为大家详细介绍了Java中的过滤器Filter和监听器Listener的使用以及二者的区别,文中的示例代码讲解详细,需要的可以参考一下
    2022-06-06
  • Java实现LeetCode(报数)

    Java实现LeetCode(报数)

    这篇文章主要介绍了Java实现LeetCode(报数),本文通过使用java实现leetcode的报数题目和实现思路分析,需要的朋友可以参考下
    2021-06-06
  • JDBC连接数据库步骤及基本操作示例详解

    JDBC连接数据库步骤及基本操作示例详解

    这篇文章主要为大家介绍了JDBC连接数据库步骤及基本操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论