SpringBoot 1.5.12.RELEASE 版本
已为例JdbcTemplate 为例。
spring-boot-autoconfigure-1.5.12.RELEASE.jar!\org\springframework\boot\autoconfigure\jdbc\JdbcTemplateAutoConfiguration.class
地方
1.1.1 @Configuration
表明是一个配置类,和以前编写的配置文件一样。注解引用@Component给容器中添加组件
1.1.2 @ConditionalOnClass({DataSource.class, JdbcTemplate.class})
DataSource、JdbcTemplate类 在应用的classpath上时才开启自动配置
部分condition条件
|
@ConditionalOnBean:
|
当容器里有指定Bean的条件下
|
|
@ConditionalOnClass:
|
当类路径下有指定类的条件下
|
|
@ConditionalOnExpression:
|
基于SpEL表达式作为判断条件
|
|
@ConditionalOnJava:
|
基于JV版本作为判断条件
|
|
@ConditionalOnJndi:
|
在JNDI存在的条件下差在指定的位置
|
|
@ConditionalOnMissingBean:
|
当容器里没有指定Bean的情况下
|
|
@ConditionalOnMissingClass:
|
当类路径下没有指定类的条件下
|
|
@ConditionalOnNotWebApplication:
|
当前项目不是Web项目的条件下
|
|
@ConditionalOnProperty:
|
指定的属性是否有指定的值
|
|
@ConditionalOnResource:
|
类路径是否有指定的值
|
|
@ConditionalOnSingleCandidate:
|
当指定Bean在容器中只有一个,或者虽然有多个但是指定首选Bean
|
|
@ConditionalOnWebApplication:
|
当前项目是Web项目的条件下
|
1.1.3 @ConditionalOnSingleCandidate(DataSource.class)
仅在单数据源bean存在时才生效
1.1.4 @AutoConfigureAfter({DataSourceAutoConfiguration.class})
在DataSourceAutoConfiguration之后再加载
1.1.4.1 DataSourceAutoConfiguration的自动注入
1.1.4.2 @EnableConfigurationProperties({DataSourceProperties.class})
@EnableConfigurationProperties 中引入类EnableConfigurationPropertiesImportSelector
@Import({EnableConfigurationPropertiesImportSelector.class})
类DataSourceProperties 为最终获取到配置文件配置信息的类。
其他配置信息,可以参考 xxxxProperties 类。 路径spring-boot-autoconfigure-1.5.12.RELEASE.jar!\org\springframework\boot\autoconfigure\jdbc\DataSourceProperties.class
即大多数自动化配置信息都在 org\springframework\boot\autoconfigure 中。