所以这基本上就是我想要实现的:用UserClass将构造函数注入User。但它正在抛出“找不到默认构造函数”错误。我怀疑如果我将@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;
}
}
感谢您的时间。
答案 0 :(得分:0)
您可以定义User类的两个bean,一个使用@Component
,另一个使用@Bean
。到目前为止,使用@Bean
的bean配置很好,但是使用@Component
的bean定义确实缺少默认构造函数。使用@Component
定义的每个bean必须具有默认构造函数或构造函数,其中所有依赖项都是自动装配的。你的bean也不是这样的。因此,要么添加默认构造函数,要么删除@Component
并仅使用@Bean
方法创建该类的bean。