luckylbl

SpringBoot

是什么?

Spring Boot 是一个开源的 Java 基于 Spring 框架的快速开发平台,由 Pivotal 团队(现为 VMware)开发。它旨在简化 Spring 应用的初始搭建以及开发过程,帮助开发者更快速地创建独立、生产级的基于 Spring 框架的应用程序。

Springboot常用注解

  1. 核心注解
    @SpringbootApplication,这是 Spring Boot 的核心注解,用于标记一个 Spring Boot 应用程序的主类
    @ComponentScan,启用组件扫描,扫描当前包及其子包中的 Spring Bean。
    @EnableAutoConfiguration,启用 Spring Boot 的自动配置机制。Spring Boot 会根据添加的依赖自动配置 Spring 应用程序。

  2. Bean相关注解
    @Component,通用组件注解,用于将类标记为 Spring Bean。
    @Service,用于标记服务层组件,通常用于业务逻辑层。
    @Controller,用于标记控制器层组件,通常用于处理 HTTP 请求。
    @RestController,组合注解,相当于 @Controller + @ResponseBody,用于标记 RESTful 风格的控制器。
    @Repository,用于标记数据访问层组件,通常用于 DAO(数据访问对象)。

  3. 依赖注入相关注解
    @AutoWired 用于自动装配依赖。可以注解在字段、构造函数或方法上。
    @Qualifier 用于指定注入的 Bean 的名称,当存在多个相同类型的 Bean 时,可以通过 @Qualifier 指定注入哪一个。
    @Resource 与 @Autowired 类似,用于自动装配依赖。它是一个 Java 标准注解,而不是 Spring 的注解。

  4. 配置相关注解
    @Configuration 用于标记配置类,通常用于定义 Bean 或配置属性。
    @Bean 用于在配置类中定义一个 Bean。
    @PropertySource 用于加载外部属性文件。
    @Value 用于注入配置文件中的属性值。

SpringBoot自动装配原理

自动装配原理分析

自动装配主要完成两件事情
* 自动装配开发者自定义的业务组件(Handler、Service、Repository 等 bean)。
* 根据开发者的设置进行自动配置(比如集成 MyBatis,自动配置 DataSource、SqlSessionFactory 等 bean)。
SpringBootApplication启动类是一个复合注解,由以下三个注解构成
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

SPI(服务拓展机制)

SPI是“基于接口的编程+策略模式+配置文件”组成实现的动态加载机制。
是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。

自动装配类

企业开发常常将常见的工具类封装抽取,以简洁便利的方式供其他的工程模块使用,SpringBoot的自动装配机制可以实现组件抽取

自动装配流程

  1. 扫描依赖模块中META-INF/spring.factories
  2. 执行装配类中方法
  3. 对象存入容器中
  4. 核心工程注入对象,调用方法使用

SpringBoot执行流程分析

  1. new了一个SpringApplication对象,使用一种类似于SPI机制的技术加载ApplicationContextInitializer、ApplicationListener 接口实例;(非重点)
    2 .调用SpringApplication.run() 方法,run方法里面大概有18个小步骤;
    1、创建并启动计时监控类StopWatch
    2、初始化应用上下文和异常报告集合(ConfigurableApplicationContext和Collection
    3、设置系统属性 configureHeadlessProperty()
    4、创建Spring运行的监听器并启动
    5、初始化默认应用参数类
    6、准备Spring环境
    7、创建beanner打印类
    8、创建应用Spring上下文(也就是spring容器)
    9、准备异常报告器
    10、准备应用上下文(也就是spring容器)
    11、刷新上下文(也就是spring容器)
    12、应用上下文刷新后置处理(也就是spring容器)
    13、停止计时监控类
    14、输出日志信息
    15、发布应用上下文启动完成事件
    16、执行所有Runner运行器(如果实现CommandLineRunner接口)
    17、发布应用上下文就绪事件
    18、完成返回容器对象

  2. 调用createApplicationContext()方法创建Spring IOC上下文对象,创建上下文对象同时会注册spring的核心组件类;ConfigurationClassPostProcessor、AutowiredAnnotationBeanPostProcessor等;

  3. 调用refreshContext() 方法启动Spring容器(12步)和内置的Servlet容器;

springboot启动流程图

image

posted on 2025-12-15 16:50  lubingliang  阅读(1)  评论(0)    收藏  举报

导航