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

回到顶部