@configuration 和 @bean


      Spring的新Java配置支持中的中心工件是 @Configuration注釋類和@Bean注釋方法。

      該@Bean注釋被用於指示一個方法實例,配置和初始化為通過Spring IoC容器進行管理的新對象。對於那些熟悉Spring的<beans/>XML配置的人來說,@Bean注釋與<bean/>元素扮演的角色相同。你可以@Bean在任何Spring中使用-annotated方法 @Component。但是,它們最常用於@Configuration類。

      對類進行注釋@Configuration表明其主要目的是作為bean定義的來源。此外,@Configuration類允許通過調用@Bean同一類中的其他方法來定義bean間依賴關系。最簡單的@Configuration類如下:


上面的AppConfig類等效於以下Spring <beans/>XML:


完整@Configuration vs“lite”@Bean模式?

       當@Bean在未注釋的類中聲明方法時 @Configuration,它們被稱為以“精簡”模式處理。在一個@Component或甚至在一個普通的舊類中聲明的Bean方法被認為是“精簡”,包含類的主要目的不同,並且@Bean方法在那里是一種獎勵。例如,服務組件可以通過@Bean每個適用組件類的附加方法將管理視圖公開給容器。在這種情況下,@Bean方法是通用的工廠方法機制。

       與full不同@Configuration,lite @Bean方法不能聲明bean間依賴關系。相反,它們對其包含組件的內部狀態進行操作,並且可選地,對它們可以聲明的參數進行操作。@Bean因此,這種方法不應該引用其他 @Bean方法。每個這樣的方法實際上只是特定bean引用的工廠方法,沒有任何特殊的運行時語義。這里的積極副作用是不必在運行時應用CGLIB子類,因此在類設計方面沒有限制(也就是說,包含類可能是final等等)。

       在常見的場景中,@Bean方法將在@Configuration類中聲明,確保始終使用“完整”模式,並因此將交叉方法引用重定向到容器的生命周期管理。這可以防止@Bean通過常規Java調用意外地調用相同的 方法,這有助於減少在“精簡”模式下操作時難以跟蹤的細微錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM