SpringBoot
是什么?
Spring Boot 是一个开源的 Java 基于 Spring 框架的快速开发平台,由 Pivotal 团队(现为 VMware)开发。它旨在简化 Spring 应用的初始搭建以及开发过程,帮助开发者更快速地创建独立、生产级的基于 Spring 框架的应用程序。
Springboot常用注解
-
核心注解
@SpringbootApplication,这是 Spring Boot 的核心注解,用于标记一个 Spring Boot 应用程序的主类
@ComponentScan,启用组件扫描,扫描当前包及其子包中的 Spring Bean。
@EnableAutoConfiguration,启用 Spring Boot 的自动配置机制。Spring Boot 会根据添加的依赖自动配置 Spring 应用程序。 -
Bean相关注解
@Component,通用组件注解,用于将类标记为 Spring Bean。
@Service,用于标记服务层组件,通常用于业务逻辑层。
@Controller,用于标记控制器层组件,通常用于处理 HTTP 请求。
@RestController,组合注解,相当于 @Controller + @ResponseBody,用于标记 RESTful 风格的控制器。
@Repository,用于标记数据访问层组件,通常用于 DAO(数据访问对象)。 -
依赖注入相关注解
@AutoWired 用于自动装配依赖。可以注解在字段、构造函数或方法上。
@Qualifier 用于指定注入的 Bean 的名称,当存在多个相同类型的 Bean 时,可以通过 @Qualifier 指定注入哪一个。
@Resource 与 @Autowired 类似,用于自动装配依赖。它是一个 Java 标准注解,而不是 Spring 的注解。 -
配置相关注解
@Configuration 用于标记配置类,通常用于定义 Bean 或配置属性。
@Bean 用于在配置类中定义一个 Bean。
@PropertySource 用于加载外部属性文件。
@Value 用于注入配置文件中的属性值。
SpringBoot自动装配原理
自动装配原理分析
自动装配主要完成两件事情
* 自动装配开发者自定义的业务组件(Handler、Service、Repository 等 bean)。
* 根据开发者的设置进行自动配置(比如集成 MyBatis,自动配置 DataSource、SqlSessionFactory 等 bean)。
SpringBootApplication启动类是一个复合注解,由以下三个注解构成
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
SPI(服务拓展机制)
SPI是“基于接口的编程+策略模式+配置文件”组成实现的动态加载机制。
是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。
自动装配类
企业开发常常将常见的工具类封装抽取,以简洁便利的方式供其他的工程模块使用,SpringBoot的自动装配机制可以实现组件抽取
自动装配流程
- 扫描依赖模块中META-INF/spring.factories
- 执行装配类中方法
- 对象存入容器中
- 核心工程注入对象,调用方法使用
SpringBoot执行流程分析
-
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、完成返回容器对象 -
调用createApplicationContext()方法创建Spring IOC上下文对象,创建上下文对象同时会注册spring的核心组件类;ConfigurationClassPostProcessor、AutowiredAnnotationBeanPostProcessor等;
-
调用refreshContext() 方法启动Spring容器(12步)和内置的Servlet容器;
springboot启动流程图

posted on 2025-12-15 16:50 lubingliang 阅读(1) 评论(0) 收藏 举报
浙公网安备 33010602011771号