基于Spring注释的bean注入

时间:2015-04-17 18:56:24

标签: spring dependency-injection annotations

所以这基本上就是我想要实现的:用UserClass将构造函数注入Us​​er。但它正在抛出“找不到默认构造函数”错误。我怀疑如果我将@Autowired添加到类User构造函数中,它会在那里注入,所以我不确定问题出在哪里。

这个问题可能过于基本,所以你可以将我重定向到较老的问题。关于基于注释的DI的信息非常少。

@Component
public class UserClass {

    public User user;

    @Autowired
    public UserClass(User user) {
        this.user = user; 
    }
}

@Configuration
public class DIconfig {

    @Bean
    public User getUser() {
        return new User('John');
    }
}

@Component
public class User {

    public String name;

    //@Autowired
    public User(String name) {
        this.name = name;
    }
}

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您可以定义User类的两个bean,一个使用@Component,另一个使用@Bean。到目前为止,使用@Bean的bean配置很好,但是使用@Component的bean定义确实缺少默认构造函数。使用@Component定义的每个bean必须具有默认构造函数或构造函数,其中所有依赖项都是自动装配的。你的bean也不是这样的。因此,要么添加默认构造函数,要么删除@Component并仅使用@Bean方法创建该类的bean。