springboot2.1之后overriding默认false解决

概述

springboot2.1之后默认的bean替换被set false了,和循环依赖被默认false一样,为了规范用户的定义。

上一波官方文档
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes

那么有些时候的确需要替换一些bean,比如替换springbootasync的默认线程池。

方式1:
把bean覆盖再开起来,这是全局生效的

spring.main.allow-bean-definition-overriding=true

方式2:
注入的时候换一个bean name,然后引用的时候使用@Resource后者@Qualifier指定下使用的bean

方式3(取巧):
被替换的bean@ConditionalOnMissingBean注解,那么只要让自己的beanspring容器中先配置完成,那么自然就不会注入目标bean了,间接达成了替换的目的.

比如在自己的替换bean的配置类上使用@AutoConfigureBefore(xxx--目标bean的configuration类),让自己的bean先配置完成

你可能感兴趣的:(springboot,java,spring,boot,rpc)