Spring Boot如果存在自动装配bean和自定义bean两个同样类型的bean注入不报错?
比如, 我在导入的Druid依赖后 Spring boot自动装配 在容器中注入的bean
然后 我自定义注入了一个bean
此时容器中应该存在两个DruiDataSource类型的bean
我getBean按照类型获取,存在两个类型相同的bean为什么不会报错?
比较疑惑,有没有大佬解答
回答:
因为你在说我在导入的Druid依赖后 Spring boot自动装配 在容器中注入的bean
,所以默认你使用的是druid-spring-boot-starter
。
然后,https://github.com/alibaba/druid/blob/master/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java
源码这里
public class DruidDataSourceAutoConfigure { private static final Logger LOGGER = LoggerFactory.getLogger(DruidDataSourceAutoConfigure.class);
@Bean(initMethod = "init")
@ConditionalOnMissingBean
public DataSource dataSource() {
LOGGER.info("Init DruidDataSource");
return new DruidDataSourceWrapper();
}
}
@ConditionalOnMissingBean
只有你未设置DataSource
时才会生效。
所以,你说的此时容器中应该存在两个DruiDataSource类型的bean
是错误的。
以上是 Spring Boot如果存在自动装配bean和自定义bean两个同样类型的bean注入不报错? 的全部内容, 来源链接: utcz.com/p/944886.html