2014-10-17 115 views
1

我有这个Repository类,我希望Autowire在单元测试中。运行测试时,我正在获取“无默认构造函数”错误。Autowire Bean没有默认构造函数,使用配置注释

有问题的类没有默认构造函数,我是Spring的新手,所以可能没有在配置类中正确创建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; 

有什么我在这里失踪或做错了?

回答

2

根据thisthis,你只需要用@Autowired来标记你的构造函数。

GenericDaoImpl.java

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

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

+0

这只适用于具有默认构造函数的bean,因此需要更多。 – wybourn 2014-10-17 10:22:32

+1

我不确定你了解我,我已经添加了一个示例以防万一 – 2014-10-17 10:32:34

+0

谢谢,这似乎工作,但现在我有问题不能自动装载java.lang.class类型的bean。 但这是一个不同的问题。 – wybourn 2014-10-17 11:01:59

相关问题