解读@SpringBootApplication注解

本文深入探讨了SpringBoot中@SpringBootApplication注解的内部机制,包括其如何整合@Configuration、@EnableAutoConfiguration和@ComponentScan的功能,以及这些注解在自动配置、组件扫描和注册额外beans中的关键作用。

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

概述

许多使用Spring Boot的开发者总是有带有@Configuration, @EnableAutoConfiguration 和 @ComponentScan 注解的主类。由于这些注解很频繁地被用在一起,Spring Boot提供了一个方便的注解@SpringBootApplication 来替代。

@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}
)}
)
public @interface SpringBootApplication {
}

@ComponentScan

在 application 所在的包上启用@Component扫描

Spring里有四大注解:@Service,@Repository,@Component,@Controller用来定义一个bean。@ComponentScan注解就是用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean。可以通过设置@ComponentScan中basePackages,includeFilters,excludeFilters属性来动态确定自动扫描范围。

@SpringBootConfiguration

允许在 context 或 import 其他 configuration classes 中注册额外的 beans

这个注解的作用与@Configuration作用相同,都是用来声明当前类是一个配置类.可以通过@Bean注解生成IOC容器管理的bean。

@EnableAutoConfiguration

启用Spring Boot的auto-configuration 机制

@EnableAutoConfiguration是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中。@EnableAutoConfiguration源码通过@Import注入了一个ImportSelector的实现类,AutoConfigurationImportSelector,这个ImportSelector最终实现根据我们的配置,动态加载所需的bean。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值