Spring實現構造注入


Spring通過setter訪問器實現對屬性的賦值,這種做法稱為設值注入;Spring還提供了通過構造方法賦值的能力,稱為構造注入。使用設值注入時,Spring通過JavaBean的無參構造方法實例化對象。

public class UserServiceImpl implements UserService {
    private UserDao dao;

    public UserServiceImpl(UserDao dao){
        this.dao = dao;
    }
}
<bean id="userDao" class="edu.cn.dao.Impl.UserDaoImpl"/>

<bean id="userService" class="edu.cn.service.Impl.UserServiceImpl">
    <constructor-arg>
        <ref bean="userDao"/>
    </constructor-arg>
</bean>

在Spring的配置文件中將DAO對象以構造注入的方式賦值給業務實例中的UserDao類型的屬性。

一個<constructor-arg>元素表示構造方法的一個參數,且使用時不區分順序。當構造方法的參數出現混淆、無法區分時,可以通過<constructor-arg>元素的index屬性指定該參數的位置索引,索引從0開始。<constructor-arg>元素還提供了type屬性用來指定參數的類型,避免字符串和基本數據類型的混淆。

構造注入的時效性好,在對象實例化時就得到所依賴的對象,便於在對象的初始化方法中使用依賴對象;但受限於方法重載的形式,使用靈活性不足。設值注入使用靈活,但時效性不足,大量的setter訪問器還增加了類的復雜性。Spring並不傾向於某種注入方式,用戶應該根據實際情況進行合理的選擇。當然Spring提供的注入方式不只這兩種,只是這兩種方式使用的最普遍。


免責聲明!

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



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