我对春天的一些事感到困惑。
首先,我什么时候想在一个带有@Bean的显式@Configuration类上使用@Component来实现@Component?
我能想到使用@Component的唯一原因是为了保存自己在@Configuration类中创建@Bean方法。还有其他原因吗?
那就是说,如果我使用@Configuration类,我似乎可以手工编写这些bean的接线代码。 IOW,我在@Component上使用@Inject我现在可以在@Bean构造函数中显式指定依赖项(当我在bean方法中创建它时)。那么我什么时候想使用@Inject?我觉得我要在这里挖一个兔子洞。
是否有任何好的教程或博客涵盖制定此类决策的最佳做法或规则?
谢谢
答案 0 :(得分:8)
一个例子:
@Component
public class SomeComponent { }
以上将在实践中创建与:
相同public class SomeComponent { }
@Configuration
public class SomeComponentConfig {
@Bean
public SomeComponent someComponent() {
return new SomeComponent();
}
}
@Component
的优势很明显:代码更少!
另一方面,@Bean
功能强大且有很多用例;例如,如果SomeComponent
位于您无法编辑的现有库中,或者您只是不想使用Spring或@Inject
注释来混淆它。