Spring學習日志之Bean的裝配


Spring容器負責創建應用程序中的bean並通過依賴注入來協調這些對象之間的關系。但是,作為開發人員,要告訴Spring需要創建哪些bean並且如何將其裝配在一起。當描述bean如何裝配時,Spring提供了兩種主要的配置方式。

基於Java的配置

隱式配置

Spring通過組件掃描來實現隱式配置。

組件掃描

  • 如果在類上使用了@Component注解,則表明該類會作為組件類,並告知Spring要為這個類創建bean。
  • 組件掃描默認不開啟,需要在配置類上使用@ComponentScan注解。默認情況下@ComponentScan會掃描與配置類相同的包。任何這個包以及這個包下的所有子包中帶有@Component注解的類都會被掃描。
  • 可以為@ComponentScan設置basePackages屬性來顯式指定要掃描的基礎包。指定時有三種實現方式:
    • String的形式來指定 - @ComponentScan(basePackages="myPackage")。此方式類型不安全,重構代碼后指定的基礎包可能會出現錯誤。
    • 指定為包中所含的類或接口 - @ComponentScan(basePackages="Student.class")
    • 創建一個用來進行掃描的空標記接口。(推薦)
  • 使用了@Component注解的會得到一個類名首字母小寫的bean ID。

顯式配置

有些時候是不太適合使用隱式裝配的,比如要將第三方庫中的組件裝配到自己的代碼的時候。

  • 需要為配置類添加一個@Configuration注解,表明該類是一個配置類,包含了如何Spring容器如何創建bean的細節。
  • 要在配置類中聲明bean,需要編寫一個帶有@Bean注解的方法,這個方法會創建所需類型的實例並返回。@Bean注解會告訴Spring該方法將會返回一個對象,該對象要注冊成為Spring應用上下文中的bean,方法體中包含了產生bean實例的邏輯。
  • 默認情況下,生成的bean ID和帶有@Bean的方法的方法名相同。
  • 對帶有@Bean注解的方法的所有調用都會被Spring攔截,以此確保會直接返回該方法所創建的bean,而不是每次都對其進行實際調用。
  • 可以在配置類中直接引用其它的bean而不需加@autowired注解。

自動裝配

簡單來說,自動裝配就是讓Spring自動滿足依賴的一種方法,在滿足依賴的過程中,會在Spring上下文中尋找所需要的其它bean。為了聲明要進行自動裝配,可以使用@Autowired注解。

  • @Autowired注解可以用在類的任何方法上。
  • @Autowired會根據所需bean的類型來進行搜索。
  • 如果沒有匹配的bean,那么Spring將會拋出一個異常。為了避免異常的出現,可以將@Autowiredrequired屬性設置為false
  • 在聲明bean時,可以為其中一個可選的bean添加@Primary注解來標記其為首選,從而避免自動裝配時多個bean可以選的歧義性。


免責聲明!

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



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