1.DataSourceAutoConfiguration 源码分析:
@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
// 内部类定义了数据源相关的条件
@ConditionalOnMissingBean(DataSource.class)
static class DefaultDataSourceConfiguration {
// 创建数据源的逻辑
@Bean
public DataSource dataSource(DataSourceProperties properties) {
// 具体的创建数据源代码
}
}
}
在DataSooureAutoConfiguration中,通过注解@ConditionClass确保存在DataSource和Embeddeddatabasetype类。@EnabkeConfigurationProperties启用了DataSouceProperties和配置属性绑定。内部的静态类在没有已存在的数据源Bean时创建默认的数据源。
2.WebMvcAutoConfiguration 源码分析:
@Configration
@ConditionOnWebApplication(Type = Type.SERV