在Java中执行此运行状况检查的正确方法?

在Java中执行此运行状况检查的正确方法?,java,Java,我正试图用Java为我的服务实现健康检查。这是使用弹簧靴。在这个健康检查中,我调用了多个服务,我需要确保每个服务的结果都是空的。然后将每个服务的返回值存储到一个对象中,该对象包括服务名称和一个布尔值,用于判断是否发生了错误。目前,我有这样的设置,对我来说,它看起来非常丑陋。我想不出其他方法来实现这一点 Public HealthCargo() { string service_name; boolean error; } @Resource(name = "AService")

我正试图用Java为我的服务实现健康检查。这是使用弹簧靴。在这个健康检查中,我调用了多个服务,我需要确保每个服务的结果都是空的。然后将每个服务的返回值存储到一个对象中,该对象包括服务名称和一个布尔值,用于判断是否发生了错误。目前,我有这样的设置,对我来说,它看起来非常丑陋。我想不出其他方法来实现这一点

Public HealthCargo() {
    string service_name;
    boolean error;
}

@Resource(name = "AService")
private AService aService;

@Resource(name = "BService")
private BService bService;

@Resource(name = "CService")
private CService cService;

@RequestMapping(method = RequestMethod.GET, value = "/healthcheck", produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public List<HealthCargo> healthcheck() {
    List<HealthCargo> checks = new ArrayList<>();
    boolean error = true;
    SomeCargoA someCargoA = new SomeCargoA();
    SomeCargoB someCargoB = new SomeCargoB();

    try {
        someCargoA = aService.fetch("182731");
        if (someCargoA == NULL)
            error = false;

    } catch (Exception e) {
    } finally {
        checks.add(New HealthCargo("aService", error));
    }

    error = true;
    try {
        someCargoB = bService.fetch("182731");
        if (someCargoB == NULL)
            error = false;

    } catch (Exception e) {
    } finally {
        checks.add(New HealthCargo("bService", error));
    }

    error = true;    
    .... // Similar logic for service C

    return checks;
}
Public Health Cargo(){
字符串服务名称;
布尔误差;
}
@资源(name=“AService”)
私人服务;
@资源(name=“BService”)
私人服务;
@资源(name=“CService”)
私人服务;
@RequestMapping(method=RequestMethod.GET,value=“/healthcheck”,products={MediaType.APPLICATION\u JSON\u value})
@应答器
公共列表健康检查(){
列表检查=新建ArrayList();
布尔错误=真;
SomeCargoA SomeCargoA=新的SomeCargoA();
SomeCargoB SomeCargoB=新的SomeCargoB();
试一试{
someCargoA=aService.fetch(“182731”);
if(someCargoA==NULL)
错误=错误;
}捕获(例外e){
}最后{
检查。添加(新HealthCargo(“aService”,错误));
}
错误=真;
试一试{
someCargoB=bService.fetch(“182731”);
if(someCargoB==NULL)
错误=错误;
}捕获(例外e){
}最后{
检查。添加(新HealthCargo(“bService”,错误));
}
错误=真;
..//服务C的类似逻辑
退回支票;
}
如果错误为false,则会有其他调用此函数的程序在列表中显示所有服务及其状态,旁边会有一个绿色复选标记


我曾考虑过使用断言,但如果断言出现错误,则会停止程序。我需要将调用的结果存储为true或false,这取决于对象是否为null。除了使用3种不同的try-catch语句之外,还有什么其他方法

由于这是Spring Boot,您可能需要熟悉带有Spring Boot执行器(专门为此用例而构建)的系统。不过,这里提出的结构有点奇怪——感觉您正在尝试设置一些东西,使服务不知道自己的运行状况,但不清楚为什么会这样(这是一种“心跳”类型的场景吗?创建合成“事务”以发送到服务,因为非合成卷很低/不连续?)