2

我已经搜索了这个问题的答案,但我的搜索巫毒一定有点不对劲。

在工作中,我注意到有人偏好使用 Spring Configuration 和 @Beans 来初始化我们的 Java 对象。虽然这种方法没有问题,但我认为切换到@Component(使用 ComponentScan)可能

  1. 稍微简化代码
  2. 让我们更符合良好的 Spring 实践

但是,考虑到这一点,我很难证明为什么我认为这是一个好的做法。我对 @Bean 的理解是它对于初始化遗留或非 Springified 代码很有用。这可能导致我将 @Component 视为一种好习惯。

@Bean 方法的一个优点是它集中了初始化。与不那么直观的@Component 相比,这更容易理解。

Spring 是否有关于每种方法的优缺点的良好文档?或者该主题的最佳实践指南?

4

1 回答 1

1

内部带有@Bean-s 的@Configuration 类称为“基于Java 的配置”。而且它更灵活,然后是“基于注释的配置”(@Component)。

在同一个项目中拥有 Java 配置和带注释的组件扫描是完全有效的,因为它们服务于不同的目的。

@Component(@Service、@Repository 等)用于自动检测和自动配置 bean。

@Bean 注解用于显式声明单个 bean,而不是让 Spring 自动执行。您可以通过这种方式为 bean 实例化提供更多设置。

您可以使用@Bean 执行以下操作。但是,@Component 无法做到这一点:

@Bean
public MyService myService(boolean someCondition) {
    if(someCondition) {
      return new MyServiceImpl1();
    } else {
        return new MyServiceImpl2();
    }
}
于 2018-06-25T16:39:42.177 回答