Spring:无法自动装配扩展另一个Bean的Bean

时间:2016-02-24 14:01:32

标签: java spring

我想为Dao类编写一个JUnit测试。 dao不需要任何保存方法,因为它只读取一些数据。

测试使用的是HSQLDB,我需要先插入一些测试数据。因为我不想只编写代码来使测试运行,所以我将DaoImpl类扩展为一个save方法。

现在我想@Autowire DaoTestImpl类,但是找到找不到依赖错误的[...]类型的限定bean。

我在src / main中的设置如下所示:

interface Dao ...
@Repository("Dao") class DaoImpl implements Dao ...

对于src / test中的测试,我有了新类:

@Repository("DaoTestImpl") class DaoTestImpl extends DaoImpl

在JUnit测试中,我正在使用

@Autowired
@Qualifier("DaoTestImpl")
private DaoTestImpl daoTestImpl;

自动装配扩展另一个Bean的Bean有什么问题吗?如果DaoTestImpl类正在实现接口,Spring将找到合适的Bean。但在这种情况下,我无法测试DaoImpl类。

1 个答案:

答案 0 :(得分:1)

您需要将接口声明为字段,并使用已实现类的名称添加限定符。然后它将按预期自动装配。 代码看起来如下:

@Autowired
@Qualifier("daoTestImpl")
// The interface
private Dao dao;