Spring依赖注入无法继承

Wil*_*ill 3 java orm spring dao hibernate

我有一个泛型基础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>
Run Code Online (Sandbox Code Playgroud)

最初,我使用依赖注入来注入sessionFactory每个dao,但后来我实现了一个基础dao并且让所有其他的daos扩展这个基础dao.

但是,在更改之后,每当我getSessionFactory()从其中一个daos中调用时,我都会null返回.这种变化对我来说是有道理的,但我似乎无法弄清楚为什么它会null在我factorySession注入基地后返回.

BaseDao

public class BaseDao<T> {

    private SessionFactory sessionFactory;

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

userDAO的

public class UserDao extends BaseDao<User> {

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

Mac*_*ski 5

我看到它的方式是你忘了为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>
Run Code Online (Sandbox Code Playgroud)

如果你把BaseDAO标记为,我认为这也是一个好主意abstract.