FailureAnalyzers Class — spring-boot Architecture
Architecture documentation for the FailureAnalyzers class in FailureAnalyzers.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/main/java/org/springframework/boot/diagnostics/FailureAnalyzers.java lines 47–112
final class FailureAnalyzers implements SpringBootExceptionReporter {
private static final Log logger = LogFactory.getLog(FailureAnalyzers.class);
private final SpringFactoriesLoader springFactoriesLoader;
private final List<FailureAnalyzer> analyzers;
public FailureAnalyzers(@Nullable ConfigurableApplicationContext context) {
this(context,
SpringFactoriesLoader.forDefaultResourceLocation((context != null) ? context.getClassLoader() : null));
}
FailureAnalyzers(@Nullable ConfigurableApplicationContext context, SpringFactoriesLoader springFactoriesLoader) {
this.springFactoriesLoader = springFactoriesLoader;
this.analyzers = loadFailureAnalyzers(context, this.springFactoriesLoader);
}
private static List<FailureAnalyzer> loadFailureAnalyzers(@Nullable ConfigurableApplicationContext context,
SpringFactoriesLoader springFactoriesLoader) {
return springFactoriesLoader.load(FailureAnalyzer.class, getArgumentResolver(context),
FailureHandler.logging(logger));
}
private static @Nullable ArgumentResolver getArgumentResolver(@Nullable ConfigurableApplicationContext context) {
if (context == null) {
return null;
}
ArgumentResolver argumentResolver = ArgumentResolver.of(BeanFactory.class, context.getBeanFactory());
argumentResolver = argumentResolver.and(Environment.class, context.getEnvironment());
return argumentResolver;
}
@Override
public boolean reportException(Throwable failure) {
FailureAnalysis analysis = analyze(failure, this.analyzers);
return report(analysis);
}
private @Nullable FailureAnalysis analyze(Throwable failure, List<FailureAnalyzer> analyzers) {
for (FailureAnalyzer analyzer : analyzers) {
try {
FailureAnalysis analysis = analyzer.analyze(failure);
if (analysis != null) {
return analysis;
}
}
catch (Throwable ex) {
logger.trace(LogMessage.format("FailureAnalyzer %s failed", analyzer), ex);
}
}
return null;
}
private boolean report(@Nullable FailureAnalysis analysis) {
List<FailureAnalysisReporter> reporters = this.springFactoriesLoader.load(FailureAnalysisReporter.class);
if (analysis == null || reporters.isEmpty()) {
return false;
}
for (FailureAnalysisReporter reporter : reporters) {
reporter.report(analysis);
}
return true;
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free