springboot @SpringBootApplication注解分析

Spring Boot启动原理
本文深入解析Spring Boot核心注解@SpringBootApplication的工作机制,从源码角度详细阐述其如何整合@Configuration、@ComponentScan与@EnableAutoConfiguration,实现自动配置、组件扫描等功能,为开发者提供全面的Spring Boot启动流程理解。

首先我们分析的就是入口类Application的启动注解@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 {
....

@SpringBootApplication是一个复合注解,包括

@ComponentScan

@SpringBootConfiguration

@EnableAutoConfiguration

  • @SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。加了这个注解的类会被自动加载到ioc容器中!
  • @EnableAutoConfiguration的作用启动自动的配置,@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据spring-boot-starter-web ,来判断你的项目是否需要添加了webmvctomcat,就会自动的帮你配置web项目中所需要的默认配置。@SpringBootApplication能自动的配置一些信息,主要依赖与这个注解!它里面有一个@AutoConfigrationPackage,该注解可以自动将包放到扫描器里面找到@SpringBootApplication所在类的,这样就会将该包和它所有的子包全部纳入spring容器!如,主包是hu.ren.wei ,子包为:hu.ren.wei.xxxx
  • @ComponentScan,扫描当前包及其子包下被@Component@Controller@Service@Repository注解标记的类并纳入到spring容器中进行管理。是以前的<context:component-scan>(以前使用在xml中使用的标签,用来扫描包配置的平行支持)。所以本demo中的User为何会被spring容器管理。

链接:https://www.jianshu.com/p/4e1cab2d8431

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值