如何捕获BeanCreationException错误?

时间:2017-12-10 12:04:08

标签: java spring

我们有一个基于Spring的应用程序,有几个@Services

@Service无法启动时(即:db down,错误的凭据等),应用程序仍然运行 - 但是在Zombie状态:它已经启动,但没有任何效果。

如何告诉Spring退出BeanCreationException?或者,如果不可能,我该如何捕获它?

1 个答案:

答案 0 :(得分:0)

您有几种选择。根据你提供的内容,我会这样做:

@ControllerAdvice
class GlobalExceptionHandler {

     @Autowired
     ApplicationContext context;

    @ExceptionHandler(BeanCreationException.class)
    public void handleConflict() {
        ((ConfigurableApplicationContext)context).close();
    }
}

或在失败的服务上添加生命周期事件处理:

@Service
public class MyService {

        @Autowired
         ApplicationContext context;

// you code

   @PreDestroy
    public void cleanUp() throws Exception {
       ((ConfigurableApplicationContext)context).close();

    }
}

我希望有所帮助。