怒肝 8 个月源码,我成为了 Spring 开源贡献者



官网入门系列,Spring官网读书笔记,这一系列的文章是入门Spring的不二之选,也是后续源码阅读的基础。 杂谈系列,Spring杂谈,这主要是一些补充内容,可以帮助大家更全面学习到Spring中的各个知识点,同时也会分享一些源码阅读技巧,个人学习心得之类的,杂谈嘛,就是不知道放哪里的文章都打算放这里,比如这篇文章。 源码分析系列,Spring源码解析,该专栏目前正在创作中,相对而言学习难度比较大,而且因为笔者写的比较细,估计大部分同学看起来会很费劲,不过如果你能认真看完,收获绝对巨大!

//?本文不探讨技术细节,只是为了简单说明这个问题,所以省略无关代码?
private?int?resolveConstructorArguments(String?beanName,?RootBeanDefinition?mbd,?BeanWrapper?bw,
???ConstructorArgumentValues?cargs,?ConstructorArgumentValues?resolvedValues)?{
??????//?....
??for?(Map.Entry<Integer,?ConstructorArgumentValues.ValueHolder>?entry?:?cargs.getIndexedArgumentValues().entrySet())?{
???int?index?=?entry.getKey();
???if?(index?<?0)?{
????throw?new?BeanCreationException(mbd.getResourceDescription(),?beanName,
??????"Invalid?constructor?argument?index:?"?+?index);
???}
????????????//?问题就出在这里
???if?(index?>?minNrOfArgs)?{
????minNrOfArgs?=?index?+?1;
???}
???????//?.....?
if?(index+1?>?minNrOfArgs)?{
????minNrOfArgs?=?index?+?1;
}

提交 issue; 直接在 GitHub 上提交 PR(pull request)。


private?int?resolveConstructorArguments(String?beanName,?RootBeanDefinition?mbd,?BeanWrapper?bw,
???ConstructorArgumentValues?cargs,?ConstructorArgumentValues?resolvedValues)?{
??TypeConverter?customConverter?=?this.beanFactory.getCustomTypeConverter();
??//?...
??for?(Map.Entry<Integer,?ConstructorArgumentValues.ValueHolder>?entry?:?cargs.getIndexedArgumentValues().entrySet())?{
???int?index?=?entry.getKey();
???if?(index?<?0)?{
????throw?new?BeanCreationException(mbd.getResourceDescription(),?beanName,
??????"Invalid?constructor?argument?index:?"?+?index);
???}
???if?(index?>?minNrOfArgs)?{
????minNrOfArgs?=?index?+?1;
???}
???//?....
??}
//?....
?return?minNrOfArgs;
}
public?class?FactoryObject?{
?public?DmzService?getDmz(String?name,?int?age,?Date?birthDay,?OrderService?orderService)?{
?public?DmzService?getDmz(OrderService?orderService,String?name)?{
??return?new?DmzService(orderService,name);
?}
}
<?xml?version="1.0"?encoding="UTF-8"?>
<beans?xmlns="http://www.springframework.org/schema/beans"
????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
????xsi:schemaLocation="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsd"
????default-autowire="constructor">
?<bean?id="factoryObject"?class="com.dmz.spring.first.instantiation.service.FactoryObject"/>
?<bean?class="com.dmz.spring.first.instantiation.service.OrderService"?id="orderService"/>
?<bean?id="dmzService"?factory-bean="factoryObject"?factory-method="getDmz">
??<constructor-arg?index="1"??value="dmz"/>
?</bean>
</beans>
if?(index?>?minNrOfArgs)?{
?minNrOfArgs?=?index?+?1;
}
if?(index?+?1?>?minNrOfArgs)?{
?minNrOfArgs?=?index?+?1;
}s

首先摆出有问题的代码; 描述具体的问题,我是直接通过一个例子来描述的; 说出自己的建议。



首先,你应该要去 Stack Overflow 提问; 如果是 bug,你应该要指明版本以及你想要做什么; 如果是一个增强的话,要提供上下文并且描述清楚问题; 同一个问题,issue 跟 PR 最好只提交一个,因为 GitHub 认为它们是一样的,如果你还不能确定的话,先提交一个 issue。






更多精彩推荐
?阿里云科学家入选计算机顶会 HPCA 名人堂,他是什么来头?
?Gary Marcus:因果熵理论的荒诞和认知科学带给AI的11个启示 | 文末赠书
?好扑科技结合区块链行业发展趋势,重磅推出“好扑区块链合伙人”计划
你点的每个“在看”,我都认真当成了喜欢
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 打好关键核心技术攻坚战 7904305
- 2 在南海坠毁的2架美国军机已被捞出 7809216
- 3 立陶宛进入紧急状态 卢卡申科发声 7714550
- 4 持续巩固增强经济回升向好态势 7619572
- 5 多家店铺水银体温计售空 7523853
- 6 奶奶自爷爷去世9个月后变化 7425776
- 7 仅退款225个快递女子已归案 7327507
- 8 日舰曾收到中方提示 7233835
- 9 琉球归属问题被迫无限期搁置 7137516
- 10 我国成功发射遥感四十七号卫星 7039553



![曹明悦预告一下 下一期还是的[doge] #活力过春天# ](https://imgs.knowsafe.com:8087/img/aideep/2022/4/9/48e26ddae01d1169dc43141a611643fe.jpg?w=250)




CSDN
