03 SpringBoot之@SpringBootApplication注解是什么 自动配置的原理

本文详细剖析了SpringBoot的@SpringBootApplication注解,揭示了其作为程序入口的角色,以及如何通过@AutoConfigurationPackage、@Import等实现自动配置。通过调试和分析,展示了自动配置类的来源——META-INF/spring.factories文件,以及自动注入的机制,解释了SpringBoot为何能省去传统XML配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot之@SpringBootApplication

首先要明白这个概念,需要你在java基础对自定义注解和让注解生效有一定的理解

1、标识类是程序的入口

作为一个完整的springboot开发的web程序,这个注解是必不可少的;1.x的版本和这个有区别,大家参照文档去复制。

这个注解的作用是说明此类事SpringBoot的主配置类,SpringBoot应该运行这个类的main方法来启动SpringBoot应用

package com.qs;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

2、进一步深入

按住control查看这个注解的源码,回顾一下注解的基础
@Target:表示这个注解用在什么地方,比如类上、属性上、方法上、参数上等
@Retention:表示这个注解在什么时候有效,一般都是RetentionPolicy.RUNTIME
@Documented:表示可以生成文档,回忆一下JAVA_HOME/bin/目录下的javadoc命令
@Inherited:表示是类有父子关系时,注解的作用域
@SpringBootConfiguration:spring的配置文件就是被这货给取代了,点击再看看就会发现这个注解上还有一个注解叫@Configuration,发现它上面有一个@Component,卧槽,是不是认识;
@EnableAutoConfiguration:大家发现没有,我们写的控制器根本都没有配置到xml中,写好放那里就完事儿了,为什么它能直接被我们访问??这就是它的功劳
@ConponentScan:这个就是之前在applicationContext.xml配置的扫描标签,回忆一下是不是叫<context:component-scan base-package=“包路径”/>

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.boot.autoconfigure;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值