itsource

봄에 @Bean 방법에서 선택적 매개변수(의존성)를 정의하는 방법은 무엇입니까?

mycopycode 2023. 6. 21. 22:34
반응형

봄에 @Bean 방법에서 선택적 매개변수(의존성)를 정의하는 방법은 무엇입니까?

스프링 주석을 사용하는 경우@Bean일부 인스턴스를 선언하려면 인수가 주입되고, 인스턴스를 찾을 수 없는 경우 NoSuchBeanException이 필요합니다.

선택 사항으로 만드는 방법은?비슷한 것@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;
  }
}

그냥 사용하기Optional:

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

사용할 수 있습니다.@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;
  }
}

또는 여러 프로파일을 정의할 수 있습니다.

@Configuration
@Profile("dev")
class DevConfiguration {

  @Bean
  public SomeComponent someComponent(Depend1 depend1) {
    SomeComponent someComponent = new SomeComponent();
    someComponent.setDepend1(depend1);
    return someComponent;
  }
}

그리고.

@Configuration
@Profile("prod")
class ProdConfiguration {

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

이제 명령줄 인수를 사용하여 응용 프로그램을 시작할 수 있습니다.-Dspring.profiles.active="dev"또는-Dspring.profiles.active="prod"그것은 당신에게 맞는 콩을 선택할 것입니다.여러 프로파일(예: 테스트 및 개발)이 필요한 경우, 간단히 교체할 수 있는 것과 동일한 구현이 필요합니다.@Profile("dev")와 함께@Profile({"dev","test"})

언급URL : https://stackoverflow.com/questions/46704950/how-to-define-optional-parameters-dependencies-in-the-bean-method-in-spring

반응형