如何在Spring的@Bean方法中定义可选参数(依赖关系)?

2022-09-02 11:44:02

当使用spring注释来声明某些实例时,参数是注入的,而这些是必需的,如果找不到实例,将抛出NoSuchBeanException。@Bean

如何使其成为可选的?类似的东西@Autowired(required = false)

例如

@Configuration
class SomeConfiguration {

  @Bean
  public SomeComponent someComponent(Depend1 depend1,
                                     Depend2 depend2) {
    SomeComponent someComponent = new SomeComponent();
    someComponent.setDepend1(depend1);
    if (depend2 != null) {
      someComponent.setDepend2(depend2);
    }
    return someComponent;
  }
}

答案 1

只需使用 :Optional

@Bean
public SomeComponent someComponent(Depend1 depend1, Optional<Depend2> depend2) {
   ...
}

答案 2

您可以在参数上使用:@Autowired(required = false)

@Configuration
class SomeConfiguration {

  @Bean
  public SomeComponent someComponent(Depend1 depend1,
                                     @Autowired(required = false) Depend2 depend2) {
    SomeComponent someComponent = new SomeComponent();
    someComponent.setDepend1(depend1);
    if (depend2 != null) {
      someComponent.setDepend2(depend2);
    }
    return someComponent;
  }
}

推荐