Spring Boot将我自己的端点添加为端点管理

Waj*_*jax 2 java spring spring-boot

我对弹簧框架和整个弹簧都很陌生 - 我开始潜入弹簧靴并评估它作为围绕REST服务构建新产品的候选者.

目前我对通过" 执行器 "模块暴露的内容感兴趣,开箱即用我知道我可以收集信息(/ info)监控挂钩(/ health)甚至关闭端点,所有这些都与主要解耦服务器通过提供配置选项将端点置于特定端口和"命名空间"下

management.port=9000
management.contextPath=/admin
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个提示,将我自己的端点添加到已定义的端点(注意我不想像HealthIndicator所提议的那样丰富现有端点,但我真的想添加一个像'/ admin/get_me_out_of_load_balancers这样的新端点")

我可以看到所有现有端点都扩展了AbstractEndpoint,但没有设法在管理contextPath下获取我的端点...

小智 10

将您的Endpoint类的实例公开为bean; Spring Boot的执行器自动配置自动发现它.例如:

package demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public static Endpoint exampleEndpoint() {
        return new Endpoint<String>() {
            @Override
            public String getId() {
                return "example";
            }

            @Override
            public boolean isEnabled() {
                return true;
            }

            @Override
            public boolean isSensitive() {
                return false;
            }

            @Override
            public String invoke() {
                return "example";
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)