`

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

 

 

 

分享到:
评论

相关推荐

    Spring Boot源码(spring-boot-2.6.2.tar.gz)

    源码中,这些端点的实现位于`org.springframework.boot.actuate.endpoint`包下。 此外,Spring Boot对Spring Data JPA和MyBatis等数据访问技术提供了良好支持。通过`spring-boot-starter-data-jpa`,开发者可以快速...

    spring-boot-reference.pdf

    Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...

    spring-boot-2.7.0.zip源码

    当我们深入研究Spring Boot 2.7.0的源码时,可以更深刻地理解其工作原理,提升我们的开发技能,并有助于解决实际项目中遇到的问题。本文将围绕Spring Boot 2.7.0的源码展开,探讨其中的关键技术和设计模式。 1. **...

    示例代码:spring actuator添加自定义endpoint

    import org.springframework.boot.actuate.endpoint.Endpoint; import org.springframework.stereotype.Component; @Component public class MyActuator implements Endpoint&lt;String&gt; { @Override public String...

    Manning.Spring.in.Action.4th.Edition.2014.11.epub

    16.2. Creating your first REST endpoint 16.2.1. Negotiating resource representation 16.2.2. Working with HTTP message converters 16.3. Serving more than resources 16.3.1. Communicating errors to the ...

    spring boot admin server

    Spring Boot Admin Server 的实现原理** - **Spring Boot Admin Server**:作为服务器端,它是一个独立的 Spring Boot 应用,对外提供 REST API 供客户端调用。通过集成 Spring Cloud Actuator 模块,获取到被监控...

    Springboot_endpoint

    import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; @Endpoint(id = "myendpoint") public class MyEndpoint { @ReadOperation public MyInfo info() { // 实现获取自定义信息的逻辑...

    使用 Spring Boot Actuator 监控应用.docx

    可以通过添加 `spring-boot-starter-security` 依赖来实现更细粒度的安全控制,或者通过配置文件来指定哪些端点可以公开访问。 4. **命令详解**: - **打开所有监控点**:`management.endpoints.web.exposure....

    Spring Boot中的单元测试.pdf

    首先,要开始在Spring Boot项目中进行单元测试,你需要引入`spring-boot-starter-test`依赖。这个起步依赖包含了多个测试相关的库,如JUnit、Spring Test、Mockito、AssertJ、Hamcrest、JsonPath和JSONassert。这些...

    spring-boot-webservice例子

    首先,`spring-boot-webservice`这个项目标题表明我们将关注的是一个基于Spring Boot的Web服务实现。Spring Boot提供了一个快速启动和运行的应用程序模型,它内置了许多默认配置,使得开发者可以专注于业务逻辑,而...

    Spring Boot面试专题.pdf

    Spring Boot 是一个基于 Spring 框架的高度集成了多种功能的开发工具,旨在简化新 Spring 应用程序的初始搭建以及开发过程。它预设了许多默认配置,使得开发者可以快速地创建一个可运行的应用,而无需编写大量样板...

    Spring Boot 做性能监控的方法.docx

    Spring Boot的性能监控主要借助于其提供的actuator模块,该模块设计目的是为了简化微服务的监控和管理工作。在Spring Boot应用中,引入actuator模块非常简单,只需在`pom.xml`文件中添加对应的依赖: ```xml ...

    Spring Boot2.x如何自定义Endpoint

    在 Spring Boot 2.x 中,自定义 Endpoint 可以通过使用 @Endpoint 注解来实现。 什么是 Endpoint? 在 Spring Boot 中,Endpoint 是指可以被外部访问的 RESTful API 接口。Endpoint 可以用来实现各种业务逻辑,...

    Java_学习如何使用Spring Boot致动器创建RESTful Web服务.zip

    在本文中,我们将深入探讨如何使用Spring Boot Actuator来创建RESTful Web服务。Spring Boot Actuator是Spring Boot框架的一部分,它提供了一套丰富的端点,用于监控和管理应用程序。通过这些端点,开发者可以轻松地...

    word、excel、ppt转pdf,spring boot小demo

    本项目是一个基于Spring Boot框架实现的实用工具,用于将Microsoft Office的三种常见文件格式——Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)转换为PDF格式。这个小Demo提供了完整的功能,无需任何水印,...

    基于spring boot开发的零食项目论文.doc

    * Spring Boot 框架的主要特点包括自动配置、 starters 依赖项、生产级别的应用程序Metric 和 HEALTH endpoint 等。 三、系统设计 * 系统设计是指根据软件需求,设计和实现软件系统的过程。 * 系统设计包括总体...

    endPointDetect.rar_Endpoint-detection

    在这个名为"endPointDetect.rar_Endpoint-detection"的压缩包中,包含了一个在Matlab环境下实现的简单而高效的端点检测算法。 Matlab是一种广泛使用的编程环境,尤其在数学计算、数据分析和工程应用中。端点检测的...

    Spring.Boot.in.Action.2015.12.pdf

    Spring.Boot.in.Action.2015.12.pdfFor online information and ordering of this and other manning books, please visit www.manning.com.thepublisheroffersdiscountsonthisbookwhenorderedinquantity For more ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...

    Spring Boot 文档

    Spring Boot提供了命令行界面(CLI),方便开发者快速开始项目。开发者可以通过手动安装,也可以使用SDKMAN!、OSX Homebrew或MacPorts等工具安装CLI。CLI提供了快速启动示例,这可以帮助初学者快速入门。 开发第一...

Global site tag (gtag.js) - Google Analytics