这篇文章主要讲解了“Bean依赖注入的简单介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Bean依赖注入的简单介绍”吧!
容器在加载BeanDefinition
时会调用bd.getPropertyValues().addPropertyValue(pv);
成员变量的定义信息添加到BeanDefinition
对象中
容器在AbstractAutowireCapableBeanFactory
的doCreateBean()
方法中调用populate()
方法执行依赖注入的逻辑
执行populate()
方法时会调用mbd.getPropertyValues()
获取BeanDefinition
对象中的成员变量的定义信息,根据此信息进行依赖注入
protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw) {
if (bw == null) {
...
}
...
// 获取bean定义信息中的成员变量定义信息
PropertyValues pvs = (mbd.hasPropertyValues() ? mbd.getPropertyValues() : null);
if (mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_BY_NAME ||
mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_BY_TYPE) {
MutablePropertyValues newPvs = new MutablePropertyValues(pvs);
// Add property values based on autowire by name if applicable.
if (mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_BY_NAME) {
autowireByName(beanName, mbd, bw, newPvs);
}
// Add property values based on autowire by type if applicable.
if (mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_BY_TYPE) {
autowireByType(beanName, mbd, bw, newPvs);
}
pvs = newPvs;
}
...
if (pvs != null) {
// 应用成员变量的定义信息
applyPropertyValues(beanName, mbd, bw, pvs);
}
}
applyPropertyValues(beanName, mbd, bw, pvs);
——bw.setPropertyValues()
——setPropertyValue()
遍历成员变量定义信息,逐个注入
容器根据成变量定义信息使用getBean()
获取到bean,再使用反射调用setterXxx()
方法或其他方法将bean注入到bean中
感谢各位的阅读,以上就是“Bean依赖注入的简单介绍”的内容了,经过本文的学习后,相信大家对Bean依赖注入的简单介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4455774/blog/4549096