您好,登錄后才能下訂單哦!
這篇文章主要講解了“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依賴注入的簡單介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。