我们有一个基于Spring的应用程序,有几个@Services
。
当@Service
无法启动时(即:db down,错误的凭据等),应用程序仍然运行 - 但是在Zombie状态:它已经启动,但没有任何效果。
如何告诉Spring退出BeanCreationException
?或者,如果不可能,我该如何捕获它?
答案 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();
}
}
我希望有所帮助。