zoukankan      html  css  js  c++  java
  • SpringBoot自动配置原理

    SprigBoot自动配置原理

    简要总结:

    SpringBoot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxProperties类是通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的。

    自动配置流程

    • @SpringBootApplication
      • @SpringBootConfiguration ---表明这是一个配置类

        • @Configuration ---表明这是一个配置类
      • @EnableAutoConfiguration ---开启自动配置

        • @AtuoConfigurationPackages ---指示包含注释类的程序包应向AutoConfigurationPackages注册。

          • @Import(AutoConfigurationPackages.Registrar.class) --->静态内部类,用于储存导入的基本包
        • @Import(AutoConfigurationImportSelector.class) 重点

          selectImports(AnnotationMetadata annotationMetadata){
              ***
              AutoConfigurationEntry autoConfigurationEntry = getAutoConfigurationEntry(autoConfigurationMetadata,
          				annotationMetadata);
              ***
          }
          |
          |  调用
          V
          protected AutoConfigurationEntry getAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata,
          			AnnotationMetadata annotationMetadata) {
               ***
               List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
               ***
           }
          |
          |  调用
          V
          protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
          	***
          	List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
          				getBeanClassLoader());
          	***
          }
          
          
      • @ComponentScan --->扫描当前类所在包及其子包

  • 相关阅读:
    String.Format( )用法
    Androidstudio中添加jar包的方法
    Qt SQLite 批量插入优化(SQLite默认将每条语句看成单独的事务)good
    aravel 之父 Taylor Otwell :我是如何工作的
    【码云周刊第 22 期】GO :互联网时代的 C 语言!
    2017 JavaScript 开发者的学习图谱
    【码云周刊第 29 期】构建高性能微服务架构
    SOA和微服务
    NET Core Web 应用部署到 Docker 中运行
    Expression Trees
  • 原文地址:https://www.cnblogs.com/juyss/p/14115671.html
Copyright © 2011-2022 走看看