Spring Boot 老启动失败,这次再也不怕了! (2)

重写 analyze 方法,并返回一个 FailureAnalysis 对象,FailureAnalysis 类的三个主要信息分别是:

public FailureAnalysis(String description, String action, Throwable cause) { this.description = description; this.action = action; this.cause = cause; }

即要展示的:可读性的错误描述、建议的检查修复动作、原始异常。

然后在自己的资源目录下创建 META-INF/spring.factories 文件,内容添加:

org.springframework.boot.diagnostics.FailureAnalyzer=\ cn.javastack.springboot.features.analyzer.PortInUseFailureAnalyzer

启动输出:

*************************** APPLICATION FAILED TO START *************************** Description: 你启动的端口 8080 被占用了. Action: 快检查下端口 8080 被哪个程序占用了,或者强制杀掉进程.

这样重新实现一下是不是要清楚多了?实习生都能看懂!

2、自定义失败分析器

下面再来自定义一个全新的失败分析器,让大家能更清楚的认识失败分析器。

我们在创建 Bean 的过程中手动抛出一个自定义的异常:

/** * 来源微信公众号:Java技术栈 */ @Bean public CommandLineRunner commandLineRunner(){ throw new JavastackException("Java技术栈异常"); }

添加一个失败分析器拦截该异常:

/** * 来源微信公众号:Java技术栈 */ package cn.javastack.springboot.features.analyzer; import org.springframework.boot.diagnostics.AbstractFailureAnalyzer; import org.springframework.boot.diagnostics.FailureAnalysis; public class JavastackFailureAnalyzer extends AbstractFailureAnalyzer<JavastackException> { @Override protected FailureAnalysis analyze(Throwable rootFailure, JavastackException cause) { return new FailureAnalysis("Java技术栈发生异常了……", "赶快去检查一下吧!", cause); } }

添加注册:

org.springframework.boot.diagnostics.FailureAnalyzer=\ cn.javastack.springboot.features.analyzer.PortInUseFailureAnalyzer,\ cn.javastack.springboot.features.analyzer.JavastackFailureAnalyzer

启动输出:

*************************** APPLICATION FAILED TO START *************************** Description: Java技术栈发生异常了…… Action: 赶快去检查一下吧!

如果不注册该失败分析器,这个自定义的异常就不会被内置的失败分析器拦截,就会输出大堆的异常信息,使用失败分析器能很直观的看出是什么错误及怎么修复这个错误。

总结

Spring Boot 提供的失败分析器以友好的错误信息和修复建议代替了大堆的错误异常信息,可以帮助我们更直观的定位应用启动故障,你学会了吗?

本文的所有示例源代码都已上传到了 Github:

https://github.com/javastacks/spring-boot-best-practice

欢迎大家 Star 关注,后续会不断更新。

学习更多 Spring Boot 教程,请关注公众号Java技术栈,在后台回复:boot,历史 Spring Boot 教程我都整理好了。

最后,别忘了点在看、转发哦,需要你的鼓励~

版权申明:本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。

近期热文推荐:

1.600+ 道 Java面试题及答案整理(2021最新版)

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssdsf.html