What does the spring annotation @ConditionalOnMissingBean do?

前端 未结 4 1597
囚心锁ツ
囚心锁ツ 2020-12-31 00:25

I am trying to start a springboot application where this annotation has been used. When I try to start the application it gives me the following error:

<
4条回答
  •  情话喂你
    2020-12-31 00:32

    The @ConditionalOnMissingBean annotation is used to load a bean only if a given bean is missing:

    @Bean
    @ConditionalOnMissingBean(SomeBean.class)
    public SomeBean otherBean(){
        return new SomeBean();
    }
    

    The above bean will get loaded by Spring only if there is no other bean of this type present in the context. On the other hand, if there is already a bean of the type SomeBean present in the application context, the above bean will not be created.

    Some use cases where this annotation comes in handy are:

    • Specifying a fallback bean which gets only loaded as a backup if there is no bean of the same type present (for example: using an in-memory database if there is no real database configured)
    • Specifying a default bean which allows being overridden in the case that a more specific bean of the same type is present in the context (for example: using a default authentication mechanism unless someone decides to replace it with his own custom authentication)

    Reference: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html

提交回复
热议问题