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 指定的值,将这些值作为自动配置类导入容器,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们解决了

  • 相关阅读:
    some tips
    ORA00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together
    Chapter 01Overview of Oracle 9i Database Perfomrmance Tuning
    Chapter 02Diagnostic and Tuning Tools
    变量与常用符号
    Chapter 18Tuning the Operating System
    标准输入输出
    Trace files
    DBADeveloped Tools
    Chapter 03Database Configuration and IO Issues
  • 原文地址:https://www.cnblogs.com/edda/p/13280283.html
Copyright © 2011-2022 走看看