不使用Spring Boot的Spring Boot Actuator

2023/05/25

1. 概述

Spring Boot项目提供了有助于创建基于Spring的独立应用程序并支持云原生开发的功能。因此,它是对Spring Framework的扩展,非常有用。

有时,我们不想使用Spring Boot,例如在将Spring Framework集成到Jakarta EE应用程序中时,但是,我们仍然希望从指标和健康检查等生产就绪功能中受益,即所谓的“可观测性”。(我们可以在文章“Spring Boot 3中的可观测性”中找到详细信息。)

可观测性功能由Spring Boot Actuator提供,它是Spring Boot的一个子项目。在本文中,我们将了解如何将Actuator集成到不使用Spring Boot的应用程序中。

2. 项目配置

排除Spring Boot时,我们需要处理应用程序打包和服务器运行时配置,并且需要自行外部化配置。Spring Boot提供的那些功能对于在我们基于Spring的应用程序中使用Actuator不是必需的。而且,虽然我们确实需要项目依赖项,但我们不能使用Spring Boot的Starter依赖项(在本例中为spring-boot-starter-actuator)。除此之外,我们还需要将必要的bean添加到应用程序上下文中。

我们可以手动或使用自动配置来完成此操作。由于Actuator的配置非常复杂并且没有详细记录,因此我们应该更喜欢自动配置。这是我们需要Spring Boot的一部分,因此我们不能完全排除Spring Boot。

2.1 添加项目依赖

要集成Actuator,我们需要spring-boot-actuator-autoconfigure依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-actuator-autoconfigure</artifactId>
    <version>3.0.6</version>
</dependency>

这还将包括spring-boot-actuator、spring-boot和spring-boot-autoconfigure作为传递依赖项。

2.2 启用自动配置

然后,我们启用自动配置。这可以通过向应用程序的配置添加@EnableAutoConfiguration轻松完成:

@EnableAutoConfiguration
// ... @ComponentScan, @Import or any other application configuration
public class AppConfig {
    // ...
}

我们应该意识到这可能会影响整个应用程序,因为如果类路径中有更多自动配置类,这也会自动配置框架的其他部分。

2.3 启用端点

默认情况下,仅启用健康端点。Actuator的自动配置类使用配置属性。例如,WebEndpointAutoConfiguration使用映射到具有“management.endpoints.web”前缀的属性的WebEndpointProperties。要启用所有端点,我们需要

management.endpoints.web.exposure.include=*

这些属性必须对上下文可用-例如,通过将它们放入application.properties文件并使用@PropertySource标注我们的配置类:

@EnableAutoConfiguration
@PropertySource("classpath:application.properties")
// ... @ComponentScan, @Import or any other application configuration
public class AppConfig {
}

2.4 测试项目配置

现在,我们已准备好调用Actuator端点。我们可以使用此属性启用健康详细信息:

management.endpoint.health.show-details=always

我们可以实现自定义健康端点

@Configuration
public class ActuatorConfiguration {

    @Bean
    public HealthIndicator sampleHealthIndicator() {
        return Health.up()
                .withDetail("info", "Sample Health")
                ::build;
    }
}

然后,调用“{url_to_project}/actuator/health”会生成如下输出:

3.总结

在本教程中,我们了解了如何在非启动应用程序中集成Spring Boot Actuator。像往常一样,所有代码实现都可以在GitHub上找到。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章