java - 没有默认构造函数的 Autowire Bean,使用配置注释

标签 java spring javabeans

我有这个存储库类,我希望在单元测试中 Autowiring 它。目前,我在运行测试时收到“无默认构造函数”错误。

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

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

最佳答案

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

GenericDaoImpl.java

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

You can apply @Autowired to constructors as well. A constructor @Autowired annotation indicates that the constructor should be autowired when creating the bean, even if no elements are used while configuring the bean in XML file

关于java - 没有默认构造函数的 Autowire Bean,使用配置注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26422511/

相关文章:

java - EditText 控制框出现问题

java - 查找方括号中但不在括号中的文本

java - 对于 java spring hibernate 网站来说,哪个是最好的 Web 服务器

java - JQGrid - 使用 IE9 加载 JQuery 数据

java - 从 Spring Controller 调用 servlet

java - 如何从 Spring Boot 中的实体访问存储库?

scala - 在 Scala 中动态创建类,我应该使用解释器吗?

java - 当我将无状态 Bean 注入(inject)有状态 Bean 时会发生什么?

javabeans - JavaBeans 的设计如何与信息隐藏相结合?

java - 使用 Single.just(true) 作为预期结果对 RxJava 进行单元测试