Autowire Bean没有默认构造函数,使用config注释

时间:2014-10-17 09:58:11

标签: java spring javabeans

我有这个Repository类,我希望在单元测试中自动装配。我正在运行测试时遇到“无默认构造函数”错误。

有问题的类没有默认构造函数,我是spring的新手,所以可能没有在config类中正确创建Bean。

以下是有问题的Bean(没有默认构造函数)

@Repository
public class GenericDaoImpl<T extends AbstractEntity> implements GenericDao<T> {

配置类

@Configuration
@EnableAspectJAutoProxy
@ComponentScan(basePackages = "com.example")
public class AppConfig {

    @Bean
    GenericDaoImpl<AbstractEntity> genericDoaIpm(final Class<AbstractEntity> tClass) {
        return new GenericDaoImpl<AbstractEntity>(tClass);
    }
}

在测试中我有:

@Autowired
private GenericDaoImpl<AbstractEntity> genericDaoImpl;

我有什么遗漏或错在这里吗?

1 个答案:

答案 0 :(得分:2)

根据thisthis,您只需要使用@Autowired标记构造函数。

<强> GenericDaoImpl.java

@Autowired
public GenericDaoImpl(Class<?> tClass) {
    ...
}
  

您也可以将@Autowired应用于构造函数。构造函数@Autowired注释表明在创建bean时应该自动装配构造函数,即使在XML文件中配置bean时没有使用任何元素