我对Spring的一些事情感到困惑。
首先,我什么时候想在带有@Bean的显式@Configuration类上使用@Component作为@Component?
我能想到的使用@Component的唯一原因是为了节省自己在@Configuration类中创建@Bean方法的时间。还有其他原因吗?
也就是说,如果我使用@Configuration类,我似乎可以手动编写这些bean的连接代码。IOW,我在@Component上使用了@Inject,我现在可以在@Bean构造函数中显式指定依赖项(当我在bean方法中创建它时)。那么我什么时候想使用@Inject呢?我觉得我在这里陷入了一个兔子洞。
是否有任何好的教程或博客涵盖了做出此类决策的最佳实践或规则?
谢啦
举个例子:
@Component
public class SomeComponent { }
在实践中,上述内容将与以下内容相同:
public class SomeComponent { }
@Configuration
public class SomeComponentConfig {
@Bean
public SomeComponent someComponent() {
return new SomeComponent();
}
}
@Component
的优点很明显:代码更少!
另一方面,@Bean
功能强大,有许多用例;例如,如果某个组件
位于您无法编辑的现有库中,或者您只是不想用Spring或@Inject
注释将其弄乱。