스프링 주석 @ConditionalOnMissingBean의 역할은 무엇입니까?
이 주석이 사용된 springboot 어플리케이션을 시작하려고 합니다.애플리케이션을 기동하려고 하면, 다음의 에러가 표시됩니다.
org.springframework.boot.autoconfigure.condition.OnBeanCondition $BeanTypeDeductioncom의 빈 유형을 추론하지 못했습니다.shutterfly.flight.platform.SBS Platform Configuration Client Config.getRestTemplate
코드:
@ConditionalOnMissingBean
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
@ConditionalOnMissingBean 주석은 지정된 빈이 없는 경우에만 빈을 로드하는 데 사용됩니다.
@Bean
@ConditionalOnMissingBean(SomeBean.class)
public SomeBean otherBean(){
return new SomeBean();
}
위의 빈은 콘텍스트에 이런 유형의 빈이 존재하지 않는 경우에만 봄까지 로드됩니다.한편, 어플리케이션콘텍스트에 SomeBean 타입의 빈이 이미 존재하는 경우는, 상기의 빈은 작성되지 않습니다.
이 주석이 유용한 사용 사례는 다음과 같습니다.
- 같은 유형의 빈이 없는 경우에만 백업으로 로드되는 폴백빈 지정(예: 실제 데이터베이스가 구성되어 있지 않은 경우 메모리 내 데이터베이스 사용)
- 같은 유형의 보다 구체적인 빈이 컨텍스트에 존재하는 경우 덮어쓸 수 있는 기본 빈 지정(예를 들어, 다른 사용자가 자신의 커스텀 인증으로 대체하기로 결정하지 않는 한 기본 인증 메커니즘을 사용)
참고 자료: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html
그@ConditionalOnMissingBean
주석은 콩이 아직 애플리케이션 컨텍스트에 없는 경우에만 등록하기 위한 스프링 조건부 주석입니다.
다음의 메뉴얼을 참조해 주세요.https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/api/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.html
사용하고 있습니다@ConditionalOnMissingBean
지정된 빈이 존재하지 않는 경우에만 빈을 포함할 경우.전남편에게.
를 설정합니다.transactionManager
활자콩이 있어야만 넣을 수 있는 콩JpaTransactionManager
아직 정의되어 있지 않습니다.
@Bean
@ConditionalOnMissingBean(type = "JpaTransactionManager")
JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
더 잘 이해하기 위해 이 시나리오도 고려해 보십시오.
제 프로젝트에서 콩을 구성했다고 칩시다.videoDecoderService
@Bean
@ConditionalOnMissingBean(VideoDecoderService.class)
public videoDecoderService videoDecoderService(){
return new VideoDecoderService;
}
그러면 누가 내 프로젝트를 사용하든 간에videoDecoderService
videoDecoderService
자기 자기 것이 아니다videoDecoderService
그러면 이 기본값이 제공됩니다.
설명서에서 다음과 같이 명기되어 있는 부분을 건너뛰지 마십시오.
이 조건은 응용 프로그램콘텍스트에서 지금까지 처리한 빈 정의와 일치할 수 있기 때문에 이 조건은 자동 설정 클래스에서만 사용할 것을 강력히 권장합니다.
나중에 다음과 같이 말할 수 있습니다.
다른 자동 구성에 의해 후보 빈이 생성될 수 있는 경우 이 조건을 사용하는 빈이 다음 시간 이후에 실행되는지 확인하십시오.
'아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.@Bean
다른 자동 설정에 의해 도입된 것은 정의한 자동 설정보다 우선합니다.이 기능을 사용하려면 , 다음의 순서에 따라서, 이러한 설정의 순서를 적절히 설정할 필요가 있습니다.@AutoConfigureBefore
.
언급URL : https://stackoverflow.com/questions/50796810/what-does-the-spring-annotation-conditionalonmissingbean-do
'programing' 카테고리의 다른 글
물결 괄호 없는 화살표 기능 (0) | 2023.02.28 |
---|---|
프로파일이 있는 임베디드 Tomcat의 스프링 부트 활성화/비활성화 (0) | 2023.02.28 |
org.json을 복제하려면 어떻게 해야 하나요?Java의 JSONObject? (0) | 2023.02.28 |
ES6/ES7 구문을 사용하여 jQuery UI를 가져오려면 어떻게 해야 합니까? (0) | 2023.02.28 |
타임스탬프에 가장 적합한 Mongoose 스키마 타입 (0) | 2023.02.28 |