반응형
봄에 @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
반응형
'itsource' 카테고리의 다른 글
PATINDEX 패턴 인수에서 밑줄 문자를 이스케이프하는 방법은 무엇입니까? (0) | 2023.06.21 |
---|---|
Oracle SQL - 하나의 문이 있는 테이블에 여러 행을 삽입하시겠습니까? (0) | 2023.06.21 |
MongoDB - 배열에 개체 업데이트 또는 삽입 (0) | 2023.06.21 |
Visual Studio에서 푸시되지 않은 나가는 커밋을 제거하는 방법은 무엇입니까? (0) | 2023.06.21 |
Vuejs 3은 하위 구성 요소에서 상위 구성 요소로 이벤트를 내보냅니다. (0) | 2023.06.21 |