? ? ? 在spring中,Bean的執行流程為啟動spring容器,實例化bean,將bean注冊到spring容器中,將bean裝配到需要的類中。
既然我們需要將bea裝配到需要的類中,那么如何實現呢?這篇文章,將來闡述一下如何實現將bean裝配到需要的類中,我們叫它對象裝配或者對象注入。
?
一.對象裝配的三種方法
對象裝配主要有三種方法:
1.屬性注入
2.構造方法注入
3.setter方法注入
?
1.屬性注入
屬性注入可以使用@Autowired注解,這相當于從spring里拿了一個對象。
屬性注入:優點是簡單方便,易于使用。缺點是只能在IoC容器使用,不能在非IoC容器使用。,并且只有在使用的時候才會出現空指針異常,很容易違背單一設計原則
(雖然缺點多,但依然是最常用的在目前,因為它的優點簡單易用讓它非常突出,如果違反了單一原則也可以通過代碼來解決)
?
2.setter方法注入
?
Setter方法注入:
優點是完全符合單一設計原則,因為使用set方法傳參就是只傳入一個對象
缺點是無法注入一個不可變對象(final修飾的對象),注入的內容可以被修改(可以調用set方法修改)
?
Settr方法是spring早期推薦的注入方法,在通用性上不如構造方法,現在的spring以及推薦使用構造方法注入的方式來進行注入。
?
3.構造函數注入
?
構造方法注入:
構造方法注入式spring官方推薦的注入方式,它的優點是通用性好,在注入之前能夠保證注入的對象不為空。可以注入不可變對象,注入的內容不可以被修改,注入的對象會被完全初始化
它的缺點是如果有多個注入會顯得臃腫,代碼量多。
?
單一設計原則(簡單點說,就是一個類只干一件事情,只負責一個職責,對于一個類,不能讓它負責多個職責)
?
?