Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Spring инжекция зависимостей и generic классы


Автор: diktator 17.8.2013, 02:16
Здравствуйте. Не могу разобраться с инжекцией зависимости в Spring для generic классов. Есть generic класс:

Код
abstract class BaseBO<Id, Entity, DAOClass extends DAO<Id, Entity>> implements BO<Id, Entity, DAOClass> {
    DAOClass dao;

    public DAOClass getDAO() {
        return dao;
    }
    //...
}


И класс использующий generic класс:
Код
public class TaskBO extends BaseBO<Long, Task, TaskDAO> implements BO<Long, Task, TaskDAO> {
    //пусто   
}


В spring нужно указать зависимость в классе TaskBO для свойства TaskDAO которое сгенерированно generic классом. Но spring не поваляет указать TaskDAO а только интерфейс DAO. 

В общем можно указать только так:
Код
<bean id="TaskBO" class="com.otv.model.bo.TaskBO">
        <property name="DAO" ref="TaskDAO" />
</bean>

<bean id="TaskDAO" class="com.otv.model.dao.TaskDAO">
        <property name="sessionFactory" ref="SessionFactory" />
    </bean>


Подскажите пожалуйста кто знает решение, как можно указать такую зависимость?

Автор: diktator 17.8.2013, 21:25
В общем разобрался, спасибо всем кто пытался помочь. Я не правильно понял, думал что в зависимостях DAO это интерфейс, а это свойство и было, просто в тет методе DAO с большой буквы вот оно и в зависимостях нужно было указать так. И ошибка была в другом:
Код
@ManagedProperty(value="#{TaskBO}")
TaskBO taskBO;

Причем если я подставлял так то работало:
Код
@ManagedProperty(value="#{TaskBO}")
BO<Long, Task, TaskDAO,> taskBO;


Потом взял просто для TaskDAO создал интерфейс свой и через него пошло. Для меня остается загадкой почему не хочет через класс устанавливаться ManagedProperty.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)