@ConditionalOnMissingBean相同的Bean使用优先级
时间: 2024-02-27 11:50:45 浏览: 20
@ConditionalOnMissingBean 是 Spring 框架中的一个注解,用于在某个 Bean 不存在时才会创建另一个 Bean。当存在多个相同类型的 Bean 时,可以通过设置优先级来确定使用哪个 Bean。
在 Spring 中,Bean 的优先级可以通过 @Order 注解来指定。@Order 注解可以用在类级别或方法级别上,用于指定 Bean 的加载顺序。值越小的 Bean 优先级越高,即先加载。
如果多个相同类型的 Bean 都没有设置 @Order 注解,则 Spring 默认按照 Bean 的名称的字母顺序进行加载,名称靠前的 Bean 优先级较高。
如果使用 @ConditionalOnMissingBean 注解来创建 Bean,并且存在多个相同类型的 Bean,那么优先级高的 Bean 会被保留,而优先级低的 Bean 会被忽略。
相关问题
@Bean比@Autowired的优先级
@Bean注解的优先级比@Autowired注解的优先级高。当使用@Bean注解时,它用于将方法返回的对象作为bean注册到Spring的应用程序上下文中。与@Autowired注解不同的是,@Bean注解可以直接在配置类中使用,而@Autowired注解通常用于自动注入依赖。因此,当一个类既使用@Bean注解又使用@Autowired注解时,@Bean注解会优先起作用。这意味着,当Spring创建bean时,将首先考虑@Bean注解定义的bean,然后才会考虑@Autowired注解注入的依赖。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *3* [Spring注解式注入依赖bean优先级](https://blog.csdn.net/millery22/article/details/123495666)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
- *2* [Spring中的@Autowired、@Resource、@Component、@Bean之间的区别](https://blog.csdn.net/weixin_53438263/article/details/130203182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
[ .reference_list ]
@Scheduled和自定义注解优先级
@Scheduled是Spring框架提供的定时任务调度方式,而自定义注解则需要开发者自行实现。在优先级方面,@Scheduled注解的优先级比自定义注解要高,因为@Scheduled注解是Spring框架提供的标准方式,被广泛使用和认可。同时,Spring框架也提供了丰富的配置和管理方式,可以方便地控制定时任务的执行时间和优先级。而自定义注解需要开发者自行实现,并且可能缺乏一些Spring框架提供的功能和优化。因此,建议在实际项目开发中优先选择@Scheduled注解,只有在特殊场景下需要自定义定时任务调度方式时才考虑自定义注解。