我有一个抽象类:
@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;
当我尝试运行它时,我得到了臭名昭著的:
未定义 BaseReport 类型的唯一 bean:预期单个匹配 bean,但找到 2 [Report1,Report2]。
我试过使用@Qualifier,但@Qualifier 的问题是(据我所知)你用它来告诉Spring你希望使用哪个类——实现接口或扩展抽象类。但这不是我的情况。我想使用抽象类本身。
我也尝试过使用@Resource,如下所示:
public class BaseReportTest extends BaseTest {
@Resource(name = "baseReport")
BaseReport _report;
Spring告诉我没有这个名字的bean。:(
我怎样才能做到这一点?
干杯。