美文网首页
springboot的自动配置原理

springboot的自动配置原理

作者: 简书徐小耳 | 来源:发表于2019-01-09 12:44 被阅读62次

    https://www.cnblogs.com/leihuazhe/p/7743479.html

    springboot自动配置原理
    其通过EnableAutoConfiguration来控制
    这个注解里面关键的就是@Import注解导入了一个EnableAutoConfigurationImportSelector类
    这个类是关键其有一个selectImports方法可以从我们的
    "META-INF/spring-autoconfigure-metadata.properties"
    文件获取目前支持的自动配置的类集合A
    然后spring还需要去META-INF/spring.factories文件中寻找目前jar包中是否配置了相关支持自动配置的类集合B
    其类似于key,value,key就是我们的注解org.springframework.boot.autoconfigure.EnableAutoConfiguration的全限定名称
    value就是每个jar包下面目前可以支持的该自动配置的具体类比如如下的jpa
    比如org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration
    其中集合A是集合B的父集合
    然后我们通过OnClassCondition来根据支持的集合A和目前我们jar包中的集合B进行过滤
    从B中剔除A不支持的
    原理就是通过递归启动线程来逐一判断
    具体的判断规则是获取我们生产的bean比如JpaRepositoriesAutoConfiguration以来的class必须存在才会给生产该bean
    生产该bean则该bean负责jpa方面的注入
    至于@EnableConfigurationProperties注解只是用来给一个properties的bean设置属性,我们在自动配置的期间需要这个注解


    总结下就是:
    首先去spring-autoconfigure-metadata.properties
    获取spring-autoconfigure-metadata.properties文件内容这个里面包含一部分自动注入要的条件
    ( 根据官网说法,使用这种配置方式可以有效的降低SpringBoot的启动时间,因为通过这种过滤方式能减少@Configuration类的数量,从而降低初始化Bean时的耗时)
    对于dubbo没出现在里面的我们会自动去检索META-INF/spring.factories文件
    寻找对应的AutoCongiguration,然后查看其ConditionalOnClass或者ConditionalOnProperty(也就是@Conditon类型的注解)是否满足
    满足才会对其进行自动注入。

    相关文章

      网友评论

          本文标题:springboot的自动配置原理

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