@ConditionalOnMissingBean、@Import 组合

2021-07-14 13:56:51 浏览数 (2)

Springboot 2.x 对于数据源配置这一块 @ConditionalOnMissingBean 和 @Import 两个注解组合在一起,它们放在一块是什么意思呢?

以下面这段代码为例阐述@ConditionalOnMissingBean 和 @Import 两个注解组合的含义:

代码语言:javascript复制
@Configuration(proxyBeanMethods = false)
@Conditional(PooledDataSourceCondition.class)
@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
        DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
        DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
protected static class PooledDataSourceConfiguration {

}

这里要表达的意思是:

当系统中不存在 DataSource、XADataSource 这两个类时,Springboot 才会通过 @Import 注解帮我们 将 DataSourceConfiguration.Hikari、DataSourceConfiguration.Tomcat.class 等组件注入到 IOC 容器中

0 人点赞