千家信息网

Bean依赖注入的简单介绍

发表于:2024-10-14 作者:千家信息网编辑
千家信息网最后更新 2024年10月14日,这篇文章主要讲解了"Bean依赖注入的简单介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Bean依赖注入的简单介绍"吧!容器在加载BeanDefi
千家信息网最后更新 2024年10月14日Bean依赖注入的简单介绍

这篇文章主要讲解了"Bean依赖注入的简单介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Bean依赖注入的简单介绍"吧!

容器在加载BeanDefinition时会调用bd.getPropertyValues().addPropertyValue(pv);成员变量的定义信息添加到BeanDefinition对象中

容器在AbstractAutowireCapableBeanFactorydoCreateBean()方法中调用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依赖注入的简单介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0