zoukankan      html  css  js  c++  java
  • 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等等同理

    未完待续...

  • 相关阅读:
    串口通信
    无法安装SQL提示文件被挂起
    flash图片幻灯片浏览
    document.all与WEB标准
    在新窗口中打开页面 的asp.net后台代码
    sql 触发器
    无技术含量的正则表达式笔记
    两个FTP服务器之间传送数据
    repeater嵌套
    登录
  • 原文地址:https://www.cnblogs.com/kobe-lin/p/11838970.html
Copyright © 2011-2022 走看看