美文网首页Spring
springboot装配原理

springboot装配原理

作者: 我是光芒万丈 | 来源:发表于2022-07-08 15:13 被阅读0次

    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名称。

    相关文章

      网友评论

        本文标题:springboot装配原理

        本文链接:https://www.haomeiwen.com/subject/mtrvbrtx.html