Я создал Custom Spring Boot Starter, и мне было интересно, можно ли определить значимое сообщение об ошибке при запуске приложения, чтобы дать пользователям подсказки о том, как правильно настроить интеграцию с Custom Starter.
В частности, я пытаюсь проинформировать пользователя о недостающей реализации bean-компонента, которая, как ожидается, будет присутствовать, и дать некоторый контекст о том, почему это необходимо предоставить. Хотя обработка FailureAnalyzer
по умолчанию NoSuchBeanDefinitionException
уже дает некоторые полезные результаты, я бы хотел немного подробнее указать c.
Именно поэтому я реализовал свою собственную FailureAnalyzer
:
package com.domain;
public class MyCustomFailureAnalyzer extends AbstractFailureAnalyzer<NoSuchBeanDefinitionException> {
@Override
protected FailureAnalysis analyze(Throwable rootFailure, NoSuchBeanDefinitionException cause) {
if(isEventHandlerBeanNotFound(cause)) {
return new FailureAnalysis("custom description", "custom action", cause);
} else {
// delegate the analysis to the regular FailureAnalyzer
return null;
}
}
private boolean isEventHandlerBeanNotFound(NoSuchBeanDefinitionException cause) {
return cause.getBeanType() != null && cause.getBeanType().equals(EventHandler.class);
}
}
Я зарегистрировал его через файл src/main/resources/META-INF/spring.factories
следующим образом:
org.springframework.boot.diagnostics.FailureAnalyzer=\
com.domain.MyCustomFailureAnalyzer
Требуемый анализ отказов срабатывает очень хорошо, если FailureAnalyzer
определен в src/main/resources/META-INF/spring.factories
приложение весенней загрузки. Когда я определяю его в своих пользовательских модулях стартера src/main/resources/META-INF/spring.factories
и добавляю собственный стартер в качестве зависимости к приложению Spring, он не работает.
Возможно ли то, чего я пытаюсь достичь, здесь вообще возможно или есть какой-то другой механизм, которым я могу воспользоваться?