spring學習總結——裝配Bean學習四(導入和混合配置)

情景:在典型的Spring應用中,咱們可能會同時使用自動化和顯式配置(JavaConfig)或者XML配置,幸虧在Spring中,這些配置方案都不是互斥的。你盡能夠將JavaConfig的組件掃描和自動裝配和/或XML配置混合在一塊兒。spring

  關於混合配置,第一件須要瞭解的事情就是在自動裝配時,它並不在乎要裝配的bean來自哪裏。自動裝配的時候會考慮到Spring容器中全部的bean,無論它是在JavaConfig或XML中聲明的仍是經過組件掃描獲取到的;component

 

1、在JavaConfig中引用XML配置

 一、使用@Import註解導入JavaConfig

例子:在CDPlayerConfig中使用@Import註解導入CDConfig;xml

CDConfig配置類:blog

 

CDPlayerConfig配置類自動化

 

或者採用一個更好的辦法,也就是不在CDPlayerConfig中使用@Import,而是建立一個更高級別的SoundSystemConfig,在這個類中使用@Import將兩個配置類組合在一塊兒:io

 

二、使用@ImportResource註解導入XML配置

 

 XML配置BlankDisc類:import

使用@ImportResource註解,假設BlankDisc定義在名爲cd-config.xml的文件中,該文件位於根類路徑下,那麼能夠修改SoundSystemConfig,讓它使用@ImportResource註解,以下所示:容器

兩個bean——配置在JavaConfig中的CDPlayer以及配置在XML中BlankDisc——都會被加載到Spring容器之中。由於CDPlayer中帶有@Bean註解的方法接受一個CompactDisc做爲參數(從spring容器),所以BlankDisc將會裝配進來,此時與它是經過XML配置的沒有任何關係。配置

 

 2、在XML配置中引用JavaConfig

在JavaConfig配置中,咱們已經展示瞭如何使用@Import@ImportResource來拆分JavaConfig類。在XML中,咱們能夠使用import元素來拆分XML配置。引用

一、使用<import>在XML配置導入其餘的XML配置

好比,假設但願將BlankDisc bean拆分到本身的配置文件中,該文件名爲cd-config.xml,這與咱們以前使用@ImportResource是同樣的。咱們能夠在XML配置文件中使用<import>元素來引用該文件:

 

二、使用<bean>將JavaConfig類導入到XML配置中

爲了將JavaConfig類導入到XML配置中,咱們能夠這樣聲明bean:

 你可能還但願建立一個更高層次的配置文件,這個文件不聲明任何的bean,只是負責將兩個或更多的配置組合起來。例如,你能夠將CDConfig bean從以前的XML文件中移除掉,而是使用第三個配置文件將這兩個組合在一塊兒:

 

無論使用JavaConfig仍是使用XML進行裝配,我一般都會建立一個根配置(root configuration),也就是這裏展示的這樣,這個配置會將兩個或更多的裝配類和/或XML文件組合起來。我也會在根配置中啓用組件掃描(經過<context:component-scan>或@ComponentScan)。你會在本書的不少例子中看到這種技術。

相關文章
相關標籤/搜索