Spring 基于注释的 bean 注入
Spring annotation based bean injection
所以这基本上就是我想要实现的目标:将带有构造函数的用户注入到 UserClass 中。但它抛出 "No default constructor found" 错误。正如我怀疑的那样,如果我将 @Autowired
添加到 class 用户构造函数,它希望在那里注入,所以我不确定问题出在哪里。
这个问题可能太基础了,所以你可以将我重定向到较早的此类问题。关于基于注释的 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;
}
}
感谢您的宝贵时间。
您定义了 class 用户的两个 bean,一个 @Component
,一个 @Bean
。到目前为止,带有 @Bean
的 bean 配置很好,但是带有 @Component
的 bean 定义确实缺少默认构造函数。每个用 @Component
定义的 bean 必须有一个默认构造函数或一个所有依赖项都自动装配的构造函数。您的 bean 也不是这种情况。因此,要么添加默认构造函数,要么删除 @Component
并仅使用 @Bean
方法创建 class 的 bean。
所以这基本上就是我想要实现的目标:将带有构造函数的用户注入到 UserClass 中。但它抛出 "No default constructor found" 错误。正如我怀疑的那样,如果我将 @Autowired
添加到 class 用户构造函数,它希望在那里注入,所以我不确定问题出在哪里。
这个问题可能太基础了,所以你可以将我重定向到较早的此类问题。关于基于注释的 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;
}
}
感谢您的宝贵时间。
您定义了 class 用户的两个 bean,一个 @Component
,一个 @Bean
。到目前为止,带有 @Bean
的 bean 配置很好,但是带有 @Component
的 bean 定义确实缺少默认构造函数。每个用 @Component
定义的 bean 必须有一个默认构造函数或一个所有依赖项都自动装配的构造函数。您的 bean 也不是这种情况。因此,要么添加默认构造函数,要么删除 @Component
并仅使用 @Bean
方法创建 class 的 bean。