springboot有什么好处/特性?
容易上手,提升开发效率,为 Spring 开发提供一个更快、更简单的开发框架。
开箱即用,远离繁琐的配置。
2.springboot主要实现思想?
约定大约配置配置;
自动装配;
约定大约配置配置
主要体现:
1.maven文件结构约定;
2.springboot 默认文件以及配置文件中属性的配置;
3.对于springmvc的依赖,自动依赖内置tomcat容器;
4.starter组件自动装配
springboot自动装配原理?
由于@SpringBootApplication中默认实现了@EnableAutoConfiguration
而@EnableAutoConfiguration中引入了AutoConfigurationImportSelector
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
重点关注下selectImports 会
读取配置过滤信息
根据 META-INF/spring-autoconfigure-metadata.properties下的文件下的条件选择加载对应的配置bean
例如:
其中一条记录:
org.springframework.boot.actuate.autoconfigure.mongo.MongoHealthContributorAutoConfiguration.ConditionalOnClass=org.springframework.data.mongodb.core.MongoTemplate
即:只有当存在MongoTemplate类时,才会自动装在。
以下为MongoHealthContributorAutoConfiguration与我们日常通过@configuration定义bean一致,也是通过@Bean方式引入.
MongoHealthContributorAutoConfiguration
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(MongoTemplate.class)
@ConditionalOnBean(MongoTemplate.class)
@ConditionalOnEnabledHealthIndicator("mongo")
@AutoConfigureAfter({ MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
MongoReactiveHealthContributorAutoConfiguration.class })
public class MongoHealthContributorAutoConfiguration
extends CompositeHealthContributorConfiguration<MongoHealthIndicator, MongoTemplate> {
@Bean
@ConditionalOnMissingBean(name = { "mongoHealthIndicator", "mongoHealthContributor" })
public HealthContributor mongoHealthContributor(Map<String, MongoTemplate> mongoTemplates) {
return createContributor(mongoTemplates);
}
}
加载bean 读取每个starter下的META-INF/spring.factories
此文件内容位接口=实现类
最后讲读取到的bean信息,根据读到的过滤信息进行过滤,selectImports返回加载到的configclass名称。
网友评论