Spring Boot 2.0 执行器端点(Actuator Endpoint)精简模式 顶

执行器端点 Actuator Endpoint

在基于Spring Boot的应用程序内通过Endpoint可以根据应用程序业务需求实现自定义的监控接口,但目前的版本中实现自定义Endpoint需要实现该接口内的以下几个方法, 代码稍显复杂:

        String getId();
        boolean isEnabled();
        boolean isSensitive();
        T invoke();

而经过重新设计后的Spring Boot 2 在Endpoint方面带来了全新的架构,实现自定义Endpoint的代码相当精简,可读性更强,例如以下代码实现了URI路径为/customPoint的一个监控点, 此特性会在2.0.0.M4以及当前的2.0.0.BUILD-SNAPSHOT中得到支持。

@Endpoint(id = "customPoint")
public class CustomEndPoint {

    @ReadOperation
    public String getCustom(@Selector String name) {
        return "MyName is ." + name;
    }
}

经过测试,目前2.0.0.BUILD-SNAPSHOT版本的Endpoint也可以在Kotlin代码中以更精简的形式实现,以下的代码实现了/ktpoint/{name} 的只读接口函数和可写控制接口, 不过目前在可写类监控点中通过POST方式提交JSON格式的参数一直无法正常传送到Endpoint的WriteOperation方法中,暂未查明具体原因。

URI (HTTP.Method)

注解

说明

/ktpoint/{name}     (GET)

@ReadOperation

只读类监控点

/ktpoint/{name}   (POST)

@WriteOperation

可写类监控点

@Endpoint(id = "ktpoint")
class MyKtPoint(var pointName: String) {

    @ReadOperation
    fun getIt(@Selector name: String) = hello("MyName is .${name} ${pointName}")

    @WriteOperation
    fun changePointName(@Selector name: String): KtPoint {
        this.pointName = name
        return KtPoint(this.pointName)
    }
}

为保证以上的Endpoint能顺利通过响应的URL访问,需要以Spring Bean的方式注册到系统的上下文环境中,以下两种方式都可以确保Endpoint顺利注册:

注解

注解所在位置

代码示例

@Component

自定义Endpoint类

@Endpoint(id = "customPoint") @Component public class CustomEndPoint { @ReadOperation public String getCustom(@Selector String name) { return "MyName is ." + name; } }

@Bean

@Configuration类

@Bean public CustomEndPoint getEndpoint() { return new CustomEndPoint(); }

以上示例的源码文件可在码云仓库下载,链接地址: act-demo2

参考资料:

https://spring.io/blog/2017/08/22/introducing-actuator-endpoints-in-spring-boot-2-0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏芋道源码1024

注册中心 Eureka 源码解析 —— Eureka-Server 启动(二)之 EurekaBootStrap

本文主要基于 Eureka 1.8.X 版本 1. 概述 2. EurekaBootStrap 2.1 初始化 Eureka-Server 配置环境 2.2 初...

7644
来自专栏杨建荣的学习笔记

PCIE的简单配置(r8笔记第82天)

最近测试了一下PCIE-SSD在数据库环境的迁移 和加压情况,IOPS无可置疑,比起机械硬盘确实是高了很多个量级,在数据环境中的IO方面确实有很稳定的提升,目...

3718
来自专栏微信音视频小程序

教你1天搭建自己的“微视”

A simple iOS Application project is shown below to illustrate how to configure S...

9865
来自专栏KaliArch

Mongodb 安装脚本(附服务器自启动)

为简化Mongodb快速安装部署,并添加至服务启动项,开机自启动,本脚本适用于centos6/7.x。

1806
来自专栏程序员同行者

Confluence自启动脚本

2162
来自专栏数据和云

实践真知:使用ASM和文件系统的数据库在AIO上有何不同?

张大朋(Lunar)Oracle 资深技术专家 Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职...

2934
来自专栏Objective-C

iOS-安装和使用 CocoaPods

4507
来自专栏云计算与大数据

How to Monitor Zookeeper

As per previous articles, our general rule of thumb is “collect all possible/rea...

2454
来自专栏软件开发

Spring MVC 学习总结(十一)——IDEA+Maven+多模块实现SSM框架集成

与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管...

2542
来自专栏杨建荣的学习笔记

备库报警邮件的分析案例(一) (r7笔记第14天)

今天早上到了公司后,收到了这样一封报警邮件,发现收到备库的报警案例也比较多,着实颠覆了我对备库基本不需要关注管理的观点。后面可以把几个案例做成一个主题来说说。 ...

3333

扫码关注云+社区

领取腾讯云代金券