Spring Boot教程(十三)在传统Spring应用中使用spring-boot-actuator模块提供监控端点

第一步:引入相关依赖

因为在传统Spring应用中,咱们不能直接使用Starter POMs。因此,咱们须要拆解了来引入到传统Spring应用的pom.xml中,主要有以下两个依赖:html

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-actuator</artifactId>
    <version>1.4.3.RELEASE</version>
    <type>jar</type>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.3.2.Final</version>
</dependency>

第二部:手工引入配置

因为在传统Spring应用中没有自动化配置功能,因此咱们须要手工的来建立配置并启用Spring Boot Actuator的监控端点。好比,咱们先来建立一个实现/health端点的配置,具体以下:web

@Configuration
@Import({ EndpointAutoConfiguration.class,
        HealthIndicatorAutoConfiguration.class})
public class MyAppSpringConfig {

    @Bean
    public EndpointHandlerMapping endpointHandlerMapping(
            Collection<? extends MvcEndpoint> endpoints) {
        return new EndpointHandlerMapping(endpoints);
    }

    @Bean
    public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
        return new HealthMvcEndpoint(delegate, false);
    }

}

其中,@Import中引入的org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration类是Spring Boot Actuator的基础配置类。org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration类是/health端点的基础配置,具体内容本文不作详细展开,读者可自行查看。而在该配置类中,还建立了两个Bean,其中EndpointHandlerMappingorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping的子类,它用来加载全部的监控端点;而HealthMvcEndpoint是具体的/health端点实现。spring

在完成上面配置以后,咱们就能够启动Spring应用,此时就能够看控制台中看到打印出了/health端点,咱们能够尝试访问该端点来获取当前实例的健康情况。mvc

除了在传统应用中能够加载/health端点以外,咱们也能够如法炮制地建立其余端点,好比:获取各个度量指标的/metrics端点,能够经过以下配置实现:app

@Configuration
@Import({ EndpointAutoConfiguration.class,
        PublicMetricsAutoConfiguration.class,
        HealthIndicatorAutoConfiguration.class})
public class MyAppSpringConfig {

    @Bean
    public EndpointHandlerMapping endpointHandlerMapping(
            Collection<? extends MvcEndpoint> endpoints) {
        return new EndpointHandlerMapping(endpoints);
    }

    @Bean
    public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
        return new HealthMvcEndpoint(delegate, false);
    }

    @Bean
    public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) {
        return new EndpointMvcAdapter(delegate);
    }
  
}

这里,咱们主要增长了两个内容:spring-boot

  • @Import中增长引入PublicMetricsAutoConfiguration配置类
  • 建立/metrics端点的实现Bean

源码来源spa

相关文章
相关标签/搜索