У меня есть абстрактный класс:
@Component
public abstract class BaseReport {
public void export() {
...
}
И куча классов, которые расширяют его и переопределяют метод export() (или нет).
@Component
public final class Report1 extends BaseReport
@Component
public final class Report2 extends BaseReport
Большинство моих тестов без проблем автоматически подключают конкретные классы, расширяющие BaseReport:
public class Report1Test extends BaseTest {
@Autowired
Report1 _report;
public class Report2Test extends BaseTest {
@Autowired
Report2 _report;
Это прекрасно работает для автосвязывания всех классов, которые расширяют BaseReport. Но мне также нужно автоматически связать сам абстрактный класс BaseReport, чтобы протестировать метод export().
public class BaseReportTest extends BaseTest {
@Autowired
BaseReport _report;
Когда я пытаюсь запустить его, я получаю печально известное:
Уникальный bean-компонент типа BaseReport не определен: ожидается один соответствующий bean-компонент, но найдено 2 [Report1, Report2].
Я пытался использовать @Qualifier, но проблема с @Qualifier заключается в том, что (насколько я понимаю) вы используете его, чтобы сообщить Spring, какой класс — который реализует интерфейс или расширяет абстрактный класс — вы хотите использовать. Но это не мой случай. Я хочу использовать сам абстрактный класс.
Я также пытался использовать @Resource, например:
public class BaseReportTest extends BaseTest {
@Resource(name = "baseReport")
BaseReport _report;
Spring говорит мне, что bean-компонента с таким именем не существует. :(
Как я могу это сделать?
Ваше здоровье.