简介:
@SpringBootApplication
是 Spring Boot 框架的核心注解,用于标记应用程序的主类。它通过组合多个关键注解,简化了 Spring Boot 应用的配置和启动流程,他也是一个复合注解
源码:
标注他的注解主要有三个:
@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
代码示例:
@SpringBootApplication
public class Springboot304CoreAnnotationApplication {//入口public static void main(String[] args) {//spring应用运行,第一个参数对应以前的配置文件//从这个配置类开始加载所有的bean//这个类有被成为起源//通过run返回值可以获得spring上下文对象//ConfigurableApplicationContext继承了ApplicationContextConfigurableApplicationContext run = SpringApplication.run(Springboot304CoreAnnotationApplication.class, args);}}
说明:
一.当前类被@SpringBootApplication注解标注,是入口类关于@SpringBootApplication:从源码:@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan他是一个复合注解,他拥有以上三个注解的功能1.关于@SpringBootConfiguration注解 (里面有标注该类是配置类的注解,被@Configuration注解标注)被该注解标注,表明是配置类代替配置文件因此在springboot注入了配置类中适用@Bean注解标注方法的话,还方法的返回值对象会被纳入ioc容器2.关于@EnableAutoConfiguration注解:启用自动配置默认情况下,springboot会默认去启用自动配置所谓的自动配置只要启用,springboot回去类路径中查找class,根据类路径当中有某个类,或某些类,来自动管理bean,不需要程序员手动配置比如springboot检测到类路径中有sqlSessionFactory,或者在配置文件中配置了数据源,springboot会认为项目中有mybatis框架会将mybatis中相关的bean自动初始化,放到ioc中管路i如:sqlSessionFactory和transaction 3.关于@ComponentScan标注在类上,扫描范围是该类所在的包下的所有类型
总结:
@SpringBootApplication
是 Spring Boot 的核心入口注解,其设计体现了“约定优于配置”的理念,通过以下方式大幅简化开发:
-
组合注解:集成配置、自动配置和组件扫描功能,减少样板代码。
-
智能推断:基于依赖和类路径动态配置应用,减少手动干预。
-
灵活性:支持自定义扫描范围和覆盖默认配置,适应复杂场景。