【Spring實戰學習筆記】第2章 裝配Bean

創建應用對象之間協作關係的行爲通常稱爲裝配(wiring),這也是依賴注入(DI)的本質。當描述bean如何進行裝配時,Spring具有非常大的靈活性,它提供了三種主要的裝配機制:

  • 在XML中進行顯式配置。
  • 在Java中進行顯式配置。
  • 隱式的bean發現機制和自動裝配。

 

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

 

Spring 從兩個角度實現自動裝配:

  • 組件掃描:Spring自動發現應用上下文中創建的bean
  • 自動裝配:Spring自動滿足bean之間的依賴

 

類上使用了@Component註解。這個簡單的註解表明該類會作爲組件類,並告知Spring要爲這個類創建bean。類上使用了@ComponentScan註解,這個註解能夠在Spring中啓用組件掃描。(如果沒有其他配置的話,@ComponentScan默認會掃描與配置類相同的包。也可以在 XML 中配置啓用組件掃描)

 

在滿足依賴的過程中,會在Spring應用上下文中尋找匹配某個bean需求的其他bean。爲了聲明要進行自動裝配,我們可以藉助Spring的@Autowired註解。

 

想要將第三方庫中的組件裝配到你的應用中,在這種情況下,無法在它的類上添加@Component註解和@Autowired註解,因此就不能使用自動化裝配的方案了

 

通常會將JavaConfig放到單獨的包中,使它與其他的應用程序邏輯分離開來

 

創建JavaConfig類的關鍵在於爲其添加@Configuration註解。要在JavaConfig中聲明bean,我們需要編寫一個方法,這個方法會創建所需類型的實例,然後給這個方法添加@Bean註解

 

@Bean

public CompactDisc sgtPeppers(){

return new SgtPeppers();

}

 

 

在XML配置中,這意味着要創建一個XML文件,並且要以<beans>元素爲根。配置示例如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

 

    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">

        <property name="host" value="smtp.163.com"/>

    </bean>

 

</beans>

 

自動裝配的時候會考慮到Spring容器中所有的bean,不管它是在JavaConfig或XML中聲明的還是通過組件掃描獲取到的。

 

在JavaConfig中引入其他Java配置,用@Import

在JavaConfig中引入XML的配置,用@ImportResource註解

在xml中引用其他xml配置,用<import resource="配置文件路徑">

在xml中引用其他Java配置,直接用<bean class="配置類路徑">

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章