1. 程式人生 > >spring學習總結——裝配Bean學習四(匯入和混合配置)

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

情景:在典型的Spring應用中,我們可能會同時使用自動化和顯式配置(JavaConfig)或者XML配置,幸好在Spring中,這些配置方案都不是互斥的。你儘可以將JavaConfig的元件掃描和自動裝配和/或XML配置混合在一起。

  關於混合配置,第一件需要了解的事情就是在自動裝配時,它並不在意要裝配的bean來自哪裡。自動裝配的時候會考慮到Spring容器中所有的bean,不管它是在JavaConfig或XML中宣告的還是通過元件掃描獲取到的;

 

一、在JavaConfig中引用XML配置

 1、使用@Import註解匯入JavaConfig

例子:在CDPlayerConfig中使用@Import

註解匯入CDConfig;

CDConfig配置類:

 

CDPlayerConfig配置類

 

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

 

2、使用@ImportResource註解匯入XML配置

 

 XML配置BlankDisc類:

使用@ImportResource註解,假設BlankDisc定義在名為cd-config.xml的檔案中,該檔案位於根類路徑下,那麼可以修改SoundSystemConfig,讓它使用@ImportResource註解,如下所示:

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

 

 二、在XML配置中引用JavaConfig

在JavaConfig配置中,我們已經展現瞭如何使用@Import@ImportResource來拆分JavaConfig類。在XML中,我們可以使用import元素來拆分XML配置。

1、使用<import
>在XML配置匯入其他的XML配置

比如,假設希望將BlankDisc bean拆分到自己的配置檔案中,該檔名為cd-config.xml,這與我們之前使用@ImportResource是一樣的。我們可以在XML配置檔案中使用<import>元素來引用該檔案:

 

2、使用<bean>將JavaConfig類匯入到XML配置中

為了將JavaConfig類匯入到XML配置中,我們可以這樣宣告bean:

 你可能還希望建立一個更高層次的配置檔案,這個檔案不宣告任何的bean,只是負責將兩個或更多的配置組合起來。例如,你可以將CDConfig bean從之前的XML檔案中移除掉,而是使用第三個配置檔案將這兩個組合在一起:

 

不管使用JavaConfig還是使用XML進行裝配,我通常都會建立一個根配置(root configuration),也就是這裡展現的這樣,這個配置會將兩個或更多的裝配類和/或XML檔案組合起來。我也會在根配置中啟用元件掃描(通過<context:component-scan>或@ComponentScan)。你會在本書的很多例子中看到這種技術。