• SpringBoot 学习(一)自动装配


    本系列文章为【狂神说 Java 】视频的课堂笔记,若有需要可配套视频学习。

    1.1 pom.xml

    (1) 父工程( spring-boot-starter-parent

    • 核心依赖,静态资源过滤等配置。
    • 编写或导入 springboot 依赖时不需要指定版本号,继承父工程版本。

    (2) 启动器spring-boot-starter

    • springboot 的启动场景,功能场景。

    • 添加某功能对应的启动器依赖即可使用此功能。

    • springboot 的依赖前缀

      <dependency>
          <groupId>org.springframework.bootgroupId>
          <artifactId>spring-boot-starter-webartifactId>
      dependency>
      
      • 1
      • 2
      • 3
      • 4

    1.2 主程序

    @SpringBootApplication
    public class HelloApplication {
        public static void main(String[] args) {
            SpringApplication.run(HelloApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.2.1 注解( @SpringBootApplication

    • @SpringBootConfiguration :SpringBoot 配置类

    • @EnableAutoConfiguration自动装配

      • 自动装配流程

        • springboot 启动时从 spring.factories 获取目标类(组件)的全限定名,将其添加到容器。

          在这里插入图片描述

      • 配置仓库

        • spring.factories 中的所有配置类含 @ConditionalOnxxx 注解,只有满足此注解的所有条件,此配置才会生效。

        在这里插入图片描述

    • 结论

      • springboot 的自动配置是在启动时扫描并加载的。
      • 导入对应的启动器( starter ),自动装配就会生效。

    1.2.2 main 方法

    (1) SpringApplication
    • 判断此应用是普通 Java 项目还是 Web 项目。

    • 查找并加载所有可用的初始化器,设置到 initializers 中。

    • 查找所有应用程序监听器,设置到 listeners 中。

    • 推断并设置 main 方法的定义类,找到主类。

    • 查看类构造器。

      /**
       * 创建一个新的 SpringApplication 实例,用于加载应用程序上下文,该实例可以在调用 run 方法
       * 前自定义。
       * @param resourceLoader 资源加载器
       * @param primarySources bean 源
       * @see #run(Class, String[])
       * @see #setSources(Set)
       */
      @SuppressWarnings({ "unchecked", "rawtypes" })
      public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {
         this.resourceLoader = resourceLoader;
         Assert.notNull(primarySources, "PrimarySources must not be null");
         this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));
         this.webApplicationType = WebApplicationType.deduceFromClasspath();
         this.bootstrapRegistryInitializers = getBootstrapRegistryInitializersFromSpringFactories();
         setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));
         setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
         this.mainApplicationClass = deduceMainApplicationClass();
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
    (2) run() 方法
    • 启动应用监听器、获取装配环境参数等。

    • 执行流程

      在这里插入图片描述

  • 相关阅读:
    antv x6让拖拽控件工具箱悬浮在画布上,工具箱区域鼠标按下不生成节点
    2024免费mac苹果电脑的清理和维护软件CleanMyMac X
    【计算机网络笔记】OSI参考模型基本概念
    【2】Spring Boot 3 项目搭建
    雷达干扰和烧穿范围简介
    Java JDK安装与配置
    PFSK130 3BSE002616R1 无源滤波器的定义
    设计模式之备忘录模式
    docker部署clickhouse-server
    (附源码)ssm在线学习网站 毕业设计 080833
  • 原文地址:https://blog.csdn.net/qq_42651415/article/details/133271890