如果Spring无法加载上下文,则检索健康检查信息

时间:2018-08-13 15:32:18

标签: spring

在我的上下文中,我有几个bean。这些bean从文本文件中获取数据。 如果找不到文本文件,则不会加载bean。 如果文件格式错误,则不会加载Bean。

其他Bean依赖于那些Bean,因此如果无法加载其中任何一个,则无法构造上下文。

是否有一种方法可以获取未构造的bean列表?

我想要做的是有一个运行状况检查页面,该页面通过http服务提供json,以查找无法加载的文件以及原因。我正在使用外部框架来提供http服务,并且正在通过静态变量访问spring上下文。

2 个答案:

答案 0 :(得分:0)

您可以收集错误(捕获的异常),而不是使这些bean失败。

然后将这些bean连接到运行状况检查器,并检索所有错误。

答案 1 :(得分:0)

我最后要做的是将上下文分为两部分。这样的事情。

@Component
public class GoodBean{
    public Sting getStatus(){
        return "bad";
    }
}

@Component
public class ActionBean{
    public ActionBean(GoodBean goodBean) {
        if ("bad".equals(goodBean.getStatus()) {
            throw new RuntimeException("you can't make bad bean good");
        }
    }
}

@Configuration
public class GoodConfig {}


@Configuration
@Import(GoodConfig.class)
public class BadConfig {}    

BadConfig导入GoodConfig。我可以使用GoodConfig来表明GoodBean状态不好。而且我可以将ActionBean配置用于其他所有功能。如果其他所有方法都不起作用,我可以转到http端点,找出是否是因为GoodBean变坏了。