проблема с введением абстрактного класса весной - PullRequest
0 голосов
/ 07 марта 2011

У меня есть два абстрактных класса

class abstract A {
//some methods .
}

class abstract B extends A {
 private  C  c ;
//other methods
}

Файл конфигурации Spring:

<bean id="b" class="B" abstract="true">
    <property name="c" ref="C" />   //I have reference for C else where
</bean>

Когда я запускаю программу, класс c не вводится.Это приходит как ноль.Я что-то упустил?

Ответы [ 3 ]

4 голосов
/ 07 марта 2011

abstract=true означает, что спецификация компонента является «шаблоном» для расширения других объявлений компонента, но это не означает, что класс является абстрактным.Я подозреваю, что bean-компонент с идентификатором b не создается, поскольку он является шаблоном / абстрактным определением.Удалите abstract=true и сделайте B конкретным типом, и он должен работать.

Документация здесь: http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-child-bean-definitions

0 голосов
/ 21 января 2013

Хотя использование 'abstract = "true"' не означает, что спецификация bean-компонента предназначена для абстрактного класса, она все же требуется для определения bean-компонента абстрактного класса, чтобы в этом классе не производилась предварительная реализация (что не удалось бы для абстрактного класса). Это указано в примечании под разделом, на которое указывает вышеуказанная ссылка (http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-child-bean-definitions). Если бы это была ситуация, когда суперкласс не был абстрактным классом, тогда да, 'abstract = "true"' не следует использовать.

0 голосов
/ 07 марта 2011

Вы не показываете установщик для C в абстрактном классе B. Вы должны использовать либо установку, либо внедрение в конструктор. Отправленный код не может работать.

Вы также должны указать B как родительский компонент для C; аналогично А для Б.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...