`

127. Spring Boot EndPoint实现原理【从零开始学Spring Boot】

阅读更多

Spring BootEndpoint主要是用来监控应用服务的运行状况,并集成在MVC中提供查看接口。内置的Endpoint比如HealthEndpoint会监控distdb的状况

       Endpoint是在包org.springframework.boot.actuate.endpoint下,其中invoke()是最主要的方法,用于返回监控的内容,isSensitive()用于权限控制。核心代码如下:

    public interface Endpoint<T> {
        String getId();
        boolean isEnabled();
        boolean isSensitive();
        T invoke();
    }
 

       Endpoint的加载还是要依靠spring.factories实现的。Spring-boot-actutor包下的META-IN/spring.factories配置了EndpointAutoConfiguration,以下是截取默认配置的一部分配置信息:

 

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.actuate.autoconfigure.AuditAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.CacheStatisticsAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration,\

 

 

     EndpointAutoConfigurationorg.springframework.boot.actuate.autoconfigure包下)就会注入必要的Endoint。有些Endpoint需要外部的收集类,比如TraceEndpoint,如下代码:

    @Bean
    @ConditionalOnMissingBean
    public TraceEndpoint traceEndpoint() {
        return new TraceEndpoint(this.traceRepository);
    }
 

TraceEndpoint会记录每次请求的RequestResponse的状态,需要嵌入到Request的流程中,这里就主要用到了3个类。

1TraceRepository用于保存和获取RequestResponse的状态。

public interface TraceRepository{
     List<Trace> findAll();
     void add(Map<String, Object> traceInfo);
 }
 

2WebRequestTraceFilter用于嵌入web request,收集请求的状态并保存在TraceRepository中。

3TraceEndpointinvoke()方法直接调用TraceRepository保存的数据。

public class TraceEndpoint extends AbstractEndpoint<List<Trace>> {
     private final TraceRepository repository;
     public TraceEndpoint(TraceRepository repository) {
         super("trace");
         Assert.notNull(repository, "Repository must not be null");
         this.repository = repository;
     }
     public List<Trace> invoke() {
         return this.repository.findAll();
     }
 }
 

 

       讲了这么多,关键是我们如何自定义Endpoint呢?期待下篇博客。

视频&交流平台

à SpringBoot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

 

 

分享到:
评论

相关推荐

    springboot web services例子 web服务例子

    这个例子展示了如何从零开始创建一个基本的Web服务,但对于更复杂的业务场景,可能需要考虑安全性、性能优化以及错误处理等更多细节。理解这些基础,将有助于你更好地利用Spring Boot和CXF构建实际的Web服务项目。

    中小企业数字化转型指南(2025年) 2025-1.docx

    中小企业数字化转型指南(2025年) 2025-1

    移动开发_安卓_键盘面板布局冲突处理_微信解决方案_1744035957.zip

    移动开发_安卓_键盘面板布局冲突处理_微信解决方案_1744035957

    华为OD机考辅导材料50题

    华为OD机考辅导材料50题

    软考网络工程师考试资料详细指南

    软考网络工程师考试是计算机技术与软件专业技术资格(水平)考试(简称“软考”)中的一个重要科目,属于中级资格。考试分为上午和下午两部分,上午为选择题,下午为案例分析题。软考网络工程师考试需要系统学习和充分准备。通过合理利用官方教材、历年真题、复习笔记、视频教程等资源,结合科学的备考计划和技巧,考生可以有效提升备考效率,顺利通过考试。

    Matlab Simulink中事件触发控制仿真的实现与稳定性研究

    内容概要:本文详细介绍了如何利用Matlab Simulink平台实现事件触发控制的仿真,并探讨了其稳定性的实现方法。文章首先解释了事件触发控制的基本原理,即仅在系统状态满足特定条件时进行控制动作,从而减少不必要的计算和资源消耗。接着,通过具体步骤指导读者搭建一个二阶系统的事件触发控制仿真模型,包括创建基础模型、添加事件触发模块以及构建控制回路。文中还提供了关键的Matlab代码片段用于实现事件触发逻辑,并详细讲解了各个模块的功能和参数设置。此外,文章强调了仿真参数的选择对结果的影响,并给出了具体的设置建议。最后,通过对仿真结果的分析,展示了事件触发控制的有效性和优越性。 适合人群:具有一定Matlab和Simulink基础的科研人员、工程师及学生。 使用场景及目标:①帮助用户深入了解事件触发控制的工作原理;②掌握使用Matlab Simulink进行复杂控制系统仿真的技能;③提高实际控制系统设计中的效率和性能。 其他说明:文章不仅提供了理论知识,还包括大量实战经验和技巧分享,有助于读者更好地理解和应用事件触发控制技术。

    【C#编程语言】VIP学习资源整合:涵盖基础至高级开发资源助力全阶段开发者成长

    内容概要:本文详细介绍了C#编程语言的学习资源,涵盖了从基础到高级的不同层次。首先,对于初学者,推荐了多本经典书籍如《C# 8.0 and .NET Core 3.0 - Modern Cross-Platform Development》、《C# 9.0 in a Nutshell》等,以及在线课程和视频教程,帮助理解C#的基本语法、面向对象编程等概念。接着,针对进阶开发者,提供了深入研究C#特性的书籍和课程,如《C# 9 and .NET 5 – Modern Cross-Platform Development》,并推荐了一些实战项目来巩固所学知识。最后,为高级开发者准备了深入探讨C#内部机制和技术细节的书籍,如《CLR via C#》,以及高级课程和开源项目。此外,还介绍了常用的开发工具(如Visual Studio、Visual Studio Code)、框架(如ASP.NET Core、Entity Framework Core),并列出了活跃的开发社区和论坛供交流学习。; 适合人群:所有对C#编程感兴趣的开发者,无论是初学者还是有经验的专业人士。; 使用场景及目标:①初学者可以通过基础资源快速入门C#编程,掌握基本语法和面向对象编程;②进阶开发者可以利用提供的资源深入理解C#特性,如并发编程、异步编程等;③高级开发者则可以通过高级资源和实战项目提升技术水平,解决复杂问题。; 其他说明:文中提到的资源不仅限于理论学习,还包括大量实战项目和开源项目,鼓励开发者在实践中不断积累经验。同时,活跃的社区和论坛也为开发者提供了良好的交流平台,有助于解决问题和获取最新资讯。

    【嵌入式系统】Systick定时器详解:24位倒计数定时器在延时与中断中的应用及寄存器函数解析

    内容概要:本文档详细介绍了Systick定时器的基础知识及其应用。Systick定时器是一个24位倒计数定时器,广泛用于延时或作为实时系统的心跳时钟。它能在计数到0后自动从RELOAD寄存器重载初始值,并可在睡眠模式下持续运行。文档重点解析了四个关键寄存器(CTRL、LOAD、VAL、CALIB)的功能与操作方式,并提供了基于这些寄存器实现的延时函数(delay_init、delay_us、delay_ms)。此外,还介绍了Systick库函数如SysTick_CLKSourceConfig()用于配置时钟源以及SysTick_Config()用于初始化Systick并设置中断优先级,最后给出了Systick中断服务函数SysTick_Handler()的定义。; 适合人群:对嵌入式系统开发有一定了解,特别是ARM架构的开发者。; 使用场景及目标:①理解Systick定时器的工作原理及内部寄存器的作用;②掌握如何利用Systick实现精确延时;③学会配置Systick定时器以适应不同的应用场景,如低功耗模式下的定时任务。; 阅读建议:建议读者结合实际硬件平台进行实验,深入理解各个寄存器的功能及延时函数的具体实现细节,同时关注Systick在不同工作模式下的行为特性。

    基于JAVAWEB校园订餐系统项目源码.zip

    基于JAVAWEB校园订餐系统项目源码

    Win10家庭版改装工具.exe

    可以把安装在电脑上的Windows 10企业版、教育版、专业版系统改装成Windows 10家庭版操作系统。

    (源码)基于 React 框架的前端技术示例项目.zip

    # 基于 React 框架的前端技术示例项目 ## 项目简介 本项目是一个基于 React 框架开发的前端示例项目,涵盖了 React 多种核心技术和开发模式,包含状态管理、路由懒加载、Hooks 使用、组件优化等多个方面,旨在帮助开发者深入理解和掌握 React 相关知识,可作为学习和实践 React 开发的参考。 ## 项目的主要特性和功能 1. 状态管理介绍了 setState 更新状态的两种写法(对象式和函数式),并说明了不同场景下的使用原则。同时,运用 React Hooks 中的 useState 让函数组件也能拥有状态并进行读写操作。 2. 路由懒加载通过 React 的 lazy 函数配合 import() 函数实现路由组件的动态加载,利用 <Suspense> 组件在加载路由打包文件前显示自定义的 loading 界面。

    医院挂号小程序源码.zip

    《医院挂号小程序源码》简介 该资源为医院挂号小程序源码,是一份极具实用价值的学习资源。在当今数字化医疗蓬勃发展的时代,小程序凭借其便捷性、轻量化等优势,成为医疗服务的重要载体。此挂号小程序源码蕴含丰富功能,涵盖用户端与管理端。 从用户端来看,患者可轻松注册登录,快速查询各科室医生排班信息,根据自身需求精准预约挂号,还能实时查看挂号进度与就诊提醒,极大提升就医体验。管理端则方便医院工作人员高效处理挂号业务,包括号源管理、预约审核、患者信息统计等,助力医院实现挂号流程的信息化与规范化。 对于开发者而言,研究这份源码能深入理解小程序开发架构、前后端交互逻辑以及医疗行业特定需求下的功能实现方式,从中汲取项目实战经验,拓宽技术视野,无论是用于个人技能提升,还是作为商业项目开发的参考范例,都有不可多得的学习价值,但需明确此资源仅作学习交流使用。

    (源码)基于HTML、CSS和JavaScript的TomMaixs studio网站.zip

    # 基于HTML、CSS和JavaScript的TomMaixs studio网站 ## 项目简介 此项目是TomMaixs studio的开源项目仓库,用于存储和维护TomMaixs studio的网站源代码。包含网站的基础架构、页面设计及必要配置信息,采用Apache License 2.0许可证开源,可供开发者免费使用和学习。 ## 项目的主要特性和功能 ### 主要特性 基于HTML、CSS和JavaScript构建,具备良好的跨平台兼容性。 有基础的网站架构和页面设计,便于开发者二次开发。 采用Apache License 2.0许可证,保证项目开放性和自由性。 ### 功能介绍 提供基础的网页浏览功能,涵盖主页、项目页面和关于页面等。 具备基础的网站导航和页面交互功能。 ## 安装使用步骤 1. 你已下载本项目的源码文件。 2. 确保开发环境安装了HTML、CSS和JavaScript的编辑器或IDE。

    一维声子晶体带隙仿真模型的Python实现及其应用

    内容概要:本文详细介绍了如何构建一维声子晶体结构带隙的仿真模型。首先解释了什么是声子晶体以及带隙的概念,接着阐述了平面波展开法和传递矩阵法这两种常用的一维声子晶体建模方法。文中提供了具体的Python代码示例,展示了如何通过有限元方法和传递矩阵法进行带隙计算,并通过Matplotlib库进行了可视化展示。此外,还讨论了一些常见的数值仿真陷阱及解决方案,如频率分辨率设置不当导致的锯齿状跳变等问题。 适合人群:对材料科学、物理学感兴趣的科研人员和技术爱好者,尤其是那些希望深入了解声子晶体带隙特性和仿真的读者。 使用场景及目标:适用于需要理解和研究声子晶体带隙特性的场合,如隔音材料设计、滤波器开发等。通过本文的学习,读者可以掌握一维声子晶体的基本理论和仿真技巧,为进一步的实际应用打下坚实的基础。 其他说明:本文提供的模型虽然相对简化,但对于初学者来说非常友好,有助于快速入门并激发更深层次的研究兴趣。同时,文中提到的一些优化建议和常见错误提示也非常有价值,可以帮助避免不必要的弯路。

    基于uni-app开发的菜谱小程序新版源码.zip

    《基于 uni-app 开发的菜谱小程序新版源码》简介 这是一份极具实用价值的学习资源——基于 uni-app 开发的菜谱小程序新版源码。uni-app 凭借其多端适配的强大特性,一次开发就能在多个平台运行,极大地提升了开发效率与应用覆盖范围。 此菜谱小程序源码功能丰富。它拥有精美且简洁直观的界面设计,方便用户快速上手操作。在内容呈现上,涵盖了海量的菜谱资源,无论是家常小菜、地方特色菜肴,还是异国料理,都能在其中找到详细的做法教程,步骤清晰,图文并茂,甚至部分还搭配了视频讲解,让烹饪新手也能轻松学会。 对于开发者而言,这份源码是学习 uni-app 开发的绝佳范例。可以深入研究其代码架构、页面布局、数据交互以及各种功能的实现逻辑,从中汲取经验,提升自己在跨平台移动应用开发方面的能力,更好地理解 uni-app 框架的优势与应用场景,为后续的开发项目奠定坚实的基础,助力开发出更多优质且高效的应用程序。

    电力系统中不平衡电网下整流与逆变电路的Simulink仿真及正负序分离控制策略

    内容概要:本文详细探讨了不平衡电网对整流电路和逆变电路的影响,并提出了通过Simulink仿真的解决方案。主要内容包括:不平衡电网对整流电路直流侧电压和逆变电路交流侧电流的影响机制;正负序分离方法及其在Simulink中的实现步骤;通过Simulink搭建模型验证控制策略的效果。文中还提供了具体的Matlab代码片段用于实现正负序分离和控制算法,展示了如何通过双闭环结构和PI调节器优化系统性能。 适合人群:从事电力电子、电力系统分析的研究人员和技术人员,尤其是那些关注电网不平衡条件下电力设备性能优化的人群。 使用场景及目标:适用于研究和开发不平衡电网条件下的电力电子设备控制系统,旨在提高电力系统的稳定性和电能质量。主要目标是减少直流侧电压的二倍频率波动和交流侧电流的负序分量,提升设备运行效率。 其他说明:文章不仅介绍了理论背景,还提供了详细的仿真模型构建指导和代码实现,有助于读者快速理解和应用所提出的控制策略。此外,文中提到的实际案例和调试技巧也为实际工程项目提供了宝贵的实践经验。

    Matlab simscape 入门案例:HowToBuildAMultibodyInSimulink (曲柄摇块机构建模仿真)

    在本案例“HowToBuildAMultibodyInSimulink”中,我们探索了如何使用MATLAB Simscape构建曲柄摇块机构的仿真模型。通过这个实例,你将学习到从零开始创建多体动力学模型的基本步骤,包括组件的选择与连接、参数设置以及仿真的运行。这是一个深入了解Simscape功能及其在机械系统建模中应用的绝佳入门教程,适合初学者提升技能并激发进一步学习的兴趣。

    Win11任务栏大小调整工具.exe

    Win11任务栏大小调整工具.exe

    软著 (2)(1)(1).docx

    软著 (2)(1)(1).docx

Global site tag (gtag.js) - Google Analytics