• SpringBoot启动原理


    通过springboot启动类的注解@SpringBootApplication

     关注注解@EnableAutoConfiguration

     点进去看这个类AutoConfigurationImportSelector的selectImports方法

     关注方法getCandidateConfigurations

    再到

      重头戏来了,加载META-INF/spring.factories这个文件

     spring.factories这个文件,这个key: EnableAutoConfiguration对应下的自动配置类都会被加载

    但是这些类是否自动配置,是根据其类上的注解@ConditionalOnClass等等来判断是否生效的

    springboot项目启动时,会扫描所有jar包中的spring.factories文件,从而拿到其需加载的自动配置类,而这些配置类是否真实生效,又根据其类上注解决定

    例如

    数据源DataSource的自动配置 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 

    生效条件是@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class }) 存在DataSource和EmbeddedDatabaseType

    redis的自动配置org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration

    其生效条件是@ConditionalOnClass(RedisOperations.class) 存在RedisOperations

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    当pom中引入spring-boot-starter-data-redis时,RedisAutoConfiguration自动配置类生效会被加载到内存中

     其他mq、mongo等等同理

    未完待续...

  • 相关阅读:
    使用nodeJs安装Vue-cli
    Win10 下安装 NodeJS
    sublime Text 3 字体
    使用THINKPHP中的控制器和模块查询数据库
    Windows下PHP开发环境搭建
    在HTML中使用JS
    Python 网络编程介绍
    python 单例模式
    Python 元类
    Python 异常处理
  • 原文地址:https://www.cnblogs.com/kobe-lin/p/11838970.html
Copyright © 2020-2023  润新知