一 引出各种条件注解
1 MongoAutoConfiguration.java源码
@Configuration
@ConditionalOnClass(MongoClient.class)
@EnableConfigurationProperties(MongoProperties.class)
@ConditionalOnMissingBean(type = "org.springframework.data.mongodb.MongoDbFactory")
public class MongoAutoConfiguration {
@Autowired
private MongoProperties properties;
@Autowired(required = false)
private MongoClientOptions options;
@Autowired
private Environment environment;
private MongoClient mongo;
@PreDestroy
public void close() {
if (this.mongo != null) {
this.mongo.close();
}
}
@Bean
@ConditionalOnMissingBean
public MongoClient mongo() throws UnknownHostException {
this.mongo = this.properties.createMongoClient(this.options, this.environment);
return this.mongo;
}
}
2 分析源码
该文件有两个条件注解:@ConditionalOnClass和@ConditionalOnMissingBean
事实上,任意一个类似上面的AutoConfiguration文件,都会找到各种各样的条件注解。
二 条件注解小结
条件注解 |
对应的Condition处理类 |
处理逻辑 |
@ConditionalOnBean |
OnBeanCondition |