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。