一般来说,Actuator的自定义端点应该在服务级别进行注释,因为这样可以让多个控制器共享相同的端点。以下是一个示例:
在Service中定义自定义端点:
@Component
public class CustomEndpoint implements Endpoint
// implementation details omitted
//...
@Override
public MyData invoke() {
//...an implementation
}
@Override
public String getId() {
return "customEndpoint";
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isSensitive() {
return false;
}
}
将自定义服务端点添加到应用程序属性中:
management.endpoints.web.exposure.include=*
然后,在控制器中,您可以通过自动装配端点并公开它来使用自定义端点,如下所示:
@RestController public class MyController {
@Autowired
private CustomEndpoint customEndpoint;
@RequestMapping("/custom")
public MyData custom() {
return customEndpoint.invoke();
}
}
现在,每个访问“/custom”端点的请求都将调用CustomEndPoint中的invoke()方法。