当前位置:首页 > 编程笔记 > 正文
已解决

SpringBoot 学习(一)自动装配

来自网友在路上 167867提问 提问时间:2023-09-27 14:41:12阅读次数: 67

最佳答案 问答题库678位专家为你答疑解惑

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

1.1 pom.xml

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

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

(2) 启动器( spring-boot-starter

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

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

  • springboot 的依赖前缀

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

1.2 主程序

@SpringBootApplication
public class HelloApplication {public static void main(String[] args) {SpringApplication.run(HelloApplication.class, args);}
}

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();
    }
    
(2) run() 方法
  • 启动应用监听器、获取装配环境参数等。

  • 执行流程

    在这里插入图片描述

查看全文

99%的人还看了

相似问题

猜你感兴趣

版权申明

本文"SpringBoot 学习(一)自动装配":http://eshow365.cn/6-14723-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!