spring boot--启动配置原理源码解析

本文将探讨Spring Boot的启动配置原理,从@SpringBootApplication注解开始,揭示其包含的@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan的含义。接着,分析SpringApplication的run()方法,包括初始化过程中的WebApplicationType判断、初始化器和监听器的设置,以及主应用类的推断。
摘要由CSDN通过智能技术生成

spring boot–启动配置原理

一、@SpringBootApplication注解

  1. 我们新建一个项目的时候,会出现springboot应用的启动入口程序,如下所示:
@SpringBootApplication
public class Application {
   
    public static void main(String[] args) {
   
        SpringApplication.run(Application.class, args);
    }
}

我们来对这个启动程序进行一下分析,首先来看一下@SpringBootApplication注解源码:

@Target({
   ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {
   @Filter(
    type = FilterType.CUSTOM,
    classes = {
   TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {
   AutoConfigurationExcludeFilter.class}
)}
)

我们会发现此注解主要包括了@SpringBootConfiguration@EnableAutoConfiguration,
@ComponentScan三个核心注解。分析如下:

  • @SpringBootConfiguration注解说明了这是一个可以被组件扫描的配置类,和spring中@Configuration是类似的,如下源码可以发现,其实现也是基于@Configuration注解实现的,只不过是进行了注解封装;
@Target({
   ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
  • @EnableAutoConfiguration类也是一个组合注解,其主要包含了@AutoConfigurationPackage和@Import({AutoConfigurationImportSelector.class})两个核心注解,源码如下。
@Target({
   ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({
   AutoConfigurationImportSelector.class})

(1)@AutoConfigurationPackage的源码如下,其作用主要是向容器导入注册的所有组件,

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值