是否有必要在 @Configuration class 中自动装配一个 @Bean 以便在 class 中使用?

Is it necessary in a @Configuration class to autowire an @Bean for use in that class?

在带有 @Configuration 注释的 class 中,有一个带有 @Bean 注释的方法,是否需要有一个同名的 @Autowired 字段作为 bean 以便在同一个 class 中使用它?既然配置 class 创建了 bean,它不应该通过直接调用方法立即访问它吗?

例如:

@Configuration
public class ConfigClass
{
    @Autowired
    private BeanForSomething beanForSomething;

    @Bean
    public BeanForSomething beanForSomething()
    {
        return new BeanForSomething();
    }

    private void methodThatUsesBean()
    {
        beanForSomething.doSomething();
    }
}

是否可以省略 @Autowired 字段并仅调用 beanForSomething().doSomething(); 来使用该 bean?也许我误解了 @Bean 注释的用法。

不,@Bean 声明已经解决了这个问题。您只需要在 methodThatUsesBean()

中调用 beanForSomething()

正如之前的回答者所说,你可以使用

private void methodThatUsesBean()
{
    beanForSomething().doSomething();
}

但是在创建另一个 bean 的情况下,您可以使用方法参数

@Bean
public BeanForSomething beanForSomething()
{
    return new BeanForSomething();
}

@Bean
public SecondBean secondBean(BeanForSomething beanForSomething)
{
     return new SecondBean(beanForSomething);
}