Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring инжекция зависимостей и generic классы / 2 сообщений из 2, страница 1 из 1
17.08.2013, 15:35:53
    #38369738
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring инжекция зависимостей и generic классы
Здравствуйте. Не могу разобраться с инжекцией зависимости в Spring для generic классов. Есть generic класс:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
abstract class BaseBO<Id, Entity, DAOClass extends DAO<Id, Entity>> implements BO<Id, Entity, DAOClass> {
    DAOClass dao;

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



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



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

В общем можно указать только так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<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>



Получается DAO<Long, Task> dao = new TaskDAO(); а надо TaskDAO dao = new TaskDAO();

Подскажите пожалуйста как указать зависимость через класс TaskDAO а не через интерфейс?
...
Рейтинг: 0 / 0
18.08.2013, 00:08:27
    #38369902
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring инжекция зависимостей и generic классы
В общем разобрался, спасибо всем кто пытался помочь. Я не правильно понял, думал что в зависимостях DAO это интерфейс, а это свойство и было, просто в сет методе DAO с большой буквы вот оно и в зависимостях нужно было указать так. И ошибка была в другом:
Код: java
1.
2.
@ManagedProperty(value="#{TaskBO}")
TaskBO taskBO;


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


Потом взял просто для TaskDAO создал интерфейс свой и через него пошло. Для меня остается загадкой почему не хочет через класс устанавливаться ManagedProperty.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring инжекция зависимостей и generic классы / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]