zoukankan      html  css  js  c++  java
  • SpringBoot(2):运行原理

    一. pom.xml

    进入父项目,这里才是真正管理SpringBoot应用里面所有依赖版本的地方,SpringBoot的版本控制中心;以后我们导入依赖默认是不需要写版本;但是如果导入的包没有在依赖中管理着就需要手动配置版本了

    二. 启动器

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    springboot-boot-starter:就是spring-boot的场景启动器;SpringBoot将所有的功能场景都抽取出来,做成一个个 starter(启动器),只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来,我们要用什么功能就导入什么样的场景启动器即可

    这里的 spring-boot-starter-web 帮我们导入了web模块正常运行所依赖的组件

    三. 主程序

     1 import org.springframework.boot.SpringApplication;
     2 import org.springframework.boot.autoconfigure.SpringBootApplication;
     3 
     4 //@SpringBootApplication 来标注一个主程序类 , 说明这是一个Spring Boot应用
     5 @SpringBootApplication
     6 public class SpringbootDemo01Application {
     7 
     8     public static void main(String[] args) {
     9         //将Spring应用启动起来
    10         SpringApplication.run(SpringbootDemo01Application.class, args);
    11     }
    12 
    13 }

    四. @SpringBootApplication  

    SpringBootApplication:SpringBoot应用

    @SpringBootApplication:SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用

    进入@SpringBootApplication

    有三个重要的注解:@ComponentScan;@SpringBootConfiguration;@EnableAutoConfiguration

    1. @ComponentScan

    ComponentScan:组件扫描

    这个注解在Spring中很重要,它对应XML配置中的元素。@ComponentScan的功能就是自动扫描并加载符合条件的组件或者bean,将这个bean定义加载到IOC容器中 

    2. @SpringBootConfiguration 

    SpringBootConfiguration:SpringBoot配置

    SpringBoot的配置类;标注在某个类上;表示这是一个SpringBoot的配置类

    进入@SpringBootConfiguration 

    3. @EnableAutoConfiguration

    EnableAutoConfiguration:自定义配置

     

    @EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效

    进入@EnableAutoConfiguration

    我们看看 @AutoConfigurationPackageAutoConfigurationImportSelector

    先进入@AutoConfigurationPackage

    AutoConfigurationPackage:自动配置程序包

    @import :Spring底层注解@import ,给容器中导入一个组件 ,导入的组件由 {Registrar.class} 将主配置类 【即@SpringBootApplication标注的类】的所在包及包下面所有子包里面的所有组件扫描到Spring容器

    再进入AutoConfigurationImportSelector

    AutoConfigurationImportSelector:自动配置导入选择器

    @Import({AutoConfigurationImportSelector.class}):给容器导入组件;它将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中;它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration),就是给容器中导入这个场景需要的所有组件,并配置好这些组件 

    找到SpringFactoriesLoader,进入查看

    发现一个配置文件 : META-INF/Spring.factories 的文件

    五. spring.factories的配置文件

    这里有很多自动配置的文件;这就是自动配置根源所在

    SpringBoot在启动的时候从类路径下的 META-INF/spring.factories 中获取 @EnableAutoConfiguration 指定的值,将这些值作为自动配置类导入容器,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们解决了

  • 相关阅读:
    学习C++的第一天
    2016.12.28
    无主之地
    一种排序
    街区最短问题
    配对类问题
    蛇形填数
    c#unity
    贪心
    台阶
  • 原文地址:https://www.cnblogs.com/edda/p/13280283.html
Copyright © 2011-2022 走看看