閱讀789 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《Spring實戰(第4版)》——第2章 裝配Bean 2.1Spring配置的可選方案

本節書摘來自異步社區《Spring實戰(第4版)》一書中的第2章,第2.1節,作者: 【美】Craig Walls(沃爾斯)著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

第2章 裝配Bean

本章內容:

聲明bean
構造器注入和Setter方法注入
裝配bean
控製bean的創建和銷毀
在看電影的時候,你曾經在電影結束後留在位置上繼續觀看片尾字幕嗎?一部電影需要由這麼多人齊心協力才能製作出來,這真是有點令人難以置信!除了主要的參與人員——演員、編劇、導演和製片人,還有那些幕後人員——音樂師、特效製作人員和藝術指導,更不用說道具師、錄音師、服裝師、化妝師、特技演員、廣告師、第一助理攝影師、第二助理攝影師、布景師、燈光師和夥食管理員(或許是最重要的人員)了。

現在想象一下,如果這些人彼此之間沒有任何交流,你最喜愛的電影會變成什麼樣子?讓我這麼說吧,他們都出現在攝影棚中,開始各做各的事情,彼此之間互不合作。如果導演保持沉默不喊“開機”,攝影師就不會開始拍攝。或許這並沒什麼大不了的,因為女主角還呆在她的保姆車裏,而且因為沒有雇傭燈光師,一切處於黑暗之中。或許你曾經看過類似這樣的電影。但是大多數電影(總之,都還是很優秀的)都是由成千上萬的人一起協作來完成的,他們有著共同的目標:製作一部廣受歡迎的佳作。

在這方麵,一個優秀的軟件與之相比並沒有太大區別。任何一個成功的應用都是由多個為了實現某一個業務目標而相互協作的組件構成的。這些組件必須彼此了解,並且相互協作來完成工作。例如,在一個在線購物係統中,訂單管理組件需要和產品管理組件以及信用卡認證組件協作。這些組件或許還需要與數據訪問組件協作,從數據庫讀取數據以及把數據寫入數據庫。

但是,正如我們在第1章中所看到的,創建應用對象之間關聯關係的傳統方法(通過構造器或者查找)通常會導致結構複雜的代碼,這些代碼很難被複用也很難進行單元測試。如果情況不嚴重的話,這些對象所做的事情隻是超出了它應該做的範圍;而最壞的情況則是,這些對象彼此之間高度耦合,難以複用和測試。

在Spring中,對象無需自己查找或創建與其所關聯的其他對象。相反,容器負責把需要相互協作的對象引用賦予各個對象。例如,一個訂單管理組件需要信用卡認證組件,但它不需要自己創建信用卡認證組件。訂單管理組件隻需要表明自己兩手空空,容器就會主動賦予它一個信用卡認證組件。

創建應用對象之間協作關係的行為通常稱為裝配(wiring),這也是依賴注入(DI)的本質。在本章我們將介紹使用Spring裝配 bean的基礎知識。因為DI是Spring的最基本要素,所以在開發基於Spring的應用時,你隨時都在使用這些技術。

在Spring中裝配bean有多種方式。作為本章的開始,我們先花一點時間來介紹一下配置Spring容器最常見的三種方法。

2.1 Spring配置的可選方案

如第1章中所述,Spring容器負責創建應用程序中的bean並通過DI來協調這些對象之間的關係。但是,作為開發人員,你需要告訴Spring要創建哪些bean並且如何將其裝配在一起。當描述bean如何進行裝配時,Spring具有非常大的靈活性,它提供了三種主要的裝配機製:

在XML中進行顯式配置;
在Java中進行顯式配置;
隱式的bean發現機製和自動裝配。
乍看上去,提供三種可選的配置方案會使Spring變得複雜。每種配置技術所提供的功能會有一些重疊,所以在特定的場景中,確定哪種技術最為合適就會變得有些困難。但是,不必緊張——在很多場景下,選擇哪種方案很大程度上就是個人喜好的問題,你盡可以選擇自己最喜歡的方式。

Spring有多種可選方案來配置bean,這是非常棒的,但有時候你必須要在其中做出選擇。

這方麵,並沒有唯一的正確答案。你所做出的選擇必須要適合你和你的項目。而且,誰說我們隻能選擇其中的一種方案呢?Spring的配置風格是可以互相搭配的,所以你可以選擇使用XML裝配一些bean,使用Spring基於Java的配置(JavaConfig)來裝配另一些bean,而將剩餘的bean讓Spring去自動發現。

即便如此,我的建議是盡可能地使用自動配置的機製。顯式配置越少越好。當你必須要顯式配置bean的時候(比如,有些源碼不是由你來維護的,而當你需要為這些代碼配置bean的時候),我推薦使用類型安全並且比XML更加強大的JavaConfig。最後,隻有當你想要使用便利的XML命名空間,並且在JavaConfig中沒有同樣的實現時,才應該使用XML。

在本章中,我們會詳細介紹這三種技術並且在整本書中都會用到它們。現在,我們會嚐試一下每種方法,對它們是什麼樣子的有一個直觀的印象。作為Spring配置的開始,我們先看一下Spring的自動化配置。

最後更新:2017-05-31 10:32:18

  上一篇:go  springboot(二):web綜合開發
  下一篇:go  完全指南之在 Ubuntu 操作係統中安裝及卸載軟件