簡體   English   中英

如何在Spring中實現@Autowired

[英]How is @Autowired implemented in Spring

我真的想對@autowired在Spring中如何實現有一個基本的了解。
反思應該以某種方式暗示其實施,但我無法弄清楚如何。
你能幫我嗎 ?

通過@Autowired進行自動裝配由BeanPostProcessor實現執行,特別是org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor

這個BeanPostProcessor處理每個bean,將掃描其類(和超類)以查找任何@Autowired注釋,並且,根據注釋(構造函數,字段或方法),它將采取適當的操作。

對於構造函數

任何給定bean類中只有一個構造函數(最大值)可以攜帶此注釋,並將'required'參數設置為true,表示構造函數在用作Spring bean時要自動裝配。 如果多個非必需構造函數帶有注釋,則它們將被視為自動裝配的候選者。 將選擇具有最大數量的依賴項的構造函數,這些構造函數可以通過匹配Spring容器中的bean來滿足。 如果不能滿足任何候選者,則將使用默認構造函數(如果存在)。 帶注釋的構造函數不必是公共的。

對於領域

在調用任何配置方法之前,在構造bean之后立即注入字段。 這樣的配置字段不必是公共的。

對於方法

配置方法可以有任意名稱和任意數量的參數; 每個參數都將使用Spring容器中的匹配bean進行自動裝配。 Bean屬性設置器方法實際上只是這種通用配置方法的特例。 配置方法不必是公開的。

所有這些都是通過反思來完成的。

進一步閱讀:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM