簡體   English   中英

Spring 依賴注入不適用於繼承

[英]Spring dependency injection not working with inheritance

我有一個通用的基本 dao 類,我在其中為所有 daos 實現了一些通用方法。

<bean id="baseDAO" class="com.db.dao.BaseDao">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="userDAO" class="com.db.dao.UserDao"></bean>

<bean id="notesDAO" class="com.db.dao.NotesDao"></bean>

最初,我使用依賴注入將sessionFactory注入到每個單獨的 dao 中,但后來我實現了一個基礎 dao,並讓所有其他 dao 擴展了這個基礎 dao。

但是,在更改之后,每當我從其中一個 daos 調用getSessionFactory() ,我都會得到null作為返回值。 這種變化對我來說很有意義,但我似乎無法弄清楚為什么它會返回null因為我已經在factorySession注入了factorySession

基道

public class BaseDao<T> {

    private SessionFactory sessionFactory;

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sessionFactory) {
       this.sessionFactory = sessionFactory;
    }

    ...
}

用戶道

public class UserDao extends BaseDao<User> {

    public User read(String userName) {
        Session session = getSessionFactory().getCurrentSession();
        session.beginTransaction();
        ...
    }

    ...
}

我的看法是你忘記在孩子上添加parent屬性:

<bean id="baseDAO" class="com.db.dao.BaseDao" abstract="true">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="userDAO" class="com.db.dao.UserDao" parent="baseDAO"></bean>

<bean id="notesDAO" class="com.db.dao.NotesDao" parent="baseDAO"></bean>

如果您將 BaseDAO 標記為abstract我認為這也是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM