【JAVA】【SPRING】自记:应用Context选择策略,殊途同归的if else

背景

前面因为个业务要求,研发报控制不了顺序,就看了工厂启动流程的埋点。

看到了靠后有个onRefresh,点过去发现了多种实现,就比较在意,这里随意发散下。

随意

主流程:Context是怎么来的

(1)context是在run时才创建的,ifnull时才做default switch创建逻辑,最终一致性无处不在。

(2)if else --> new xxxContext()

这里的注释特别看下,说明了ifnull的判断 

(3)WebApplicationType是什么时候设置的?构造方法或主动设置

ContextClass和WebApplicationType是一一对应的原则上,两者set互相对应,自洽健壮

题外话:还支持SpringApplicationBuilder创建,手动设置 

 

值得学习的是基础方法的实现设计

易找到解析应用类型

this.webApplicationType = WebApplicationType.deduceFromClasspath();

初一看就是普通的class.forName判断,内部集成了对于各类型的判断,或递归 

 

 最后还做了个对于异常的重试,可能是内部类命名不规范的冗余 

值得学习的是这里,很多野蛮源码的异常层层抛,异常体系形同虚设。而spring这个工具就演示了如何合适处理

首先知识储备上要知晓Class.forName可能的异常情况,才能做到捕获指定异常,它真的是个异常,明确认定。

并放行其它异常正常返回,如图classNotFound那就是不存在返回false即可 

对应系统建设的场景,就是明确的区分出业务可以正常执行下去走完流程的,和明确阻塞性的异常。系统不健壮动不动就要排查和此有关。

但要求所有开发都有对应思想,但外包和一些正式的水平。。。算了慢性死亡的公司。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值