提问者:小点点

我什么时候会使用@Bean而不是@Component?


我对Spring的一些事情感到困惑。

首先,我什么时候想在带有@Bean的显式@Configuration类上使用@Component作为@Component?

我能想到的使用@Component的唯一原因是为了节省自己在@Configuration类中创建@Bean方法的时间。还有其他原因吗?

也就是说,如果我使用@Configuration类,我似乎可以手动编写这些bean的连接代码。IOW,我在@Component上使用了@Inject,我现在可以在@Bean构造函数中显式指定依赖项(当我在bean方法中创建它时)。那么我什么时候想使用@Inject呢?我觉得我在这里陷入了一个兔子洞。

是否有任何好的教程或博客涵盖了做出此类决策的最佳实践或规则?

谢啦


共1个答案

匿名用户

举个例子:

@Component
public class SomeComponent { }

在实践中,上述内容将与以下内容相同:

public class SomeComponent { }
@Configuration
public class SomeComponentConfig {
    @Bean
    public SomeComponent someComponent() {
        return new SomeComponent();
    }
}

@Component的优点很明显:代码更少!

另一方面,@Bean功能强大,有许多用例;例如,如果某个组件位于您无法编辑的现有库中,或者您只是不想用Spring或@Inject注释将其弄乱。