SpringBoot项目注解之@SpringBootApplication

本文介绍了Spring Boot项目启动类注解@SpringBootApplication,它包含7个注解,着重解析了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。@SpringBootConfiguration替代xml配置,@EnableAutoConfiguration体现自动配置优势,@ComponentScan自动扫描加载组件。深入理解需研究启动原理。

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

@SpringBootApplication作为springboot项目启动类上的注解,尤为重要。

点开源码我们可以看出其包含了7个注解,我们着重了解@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

@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 {}

@SpringBootConfiguration:其实就是@Configuration;@Configuration是spring3.0的一个注解,用来代替applicationContext.xml文件,和@Bean配合使用,用于修饰配置类,将@Bean下的方法、对象等注册为IOC容器中的bean;(还记得以前的项目中用xml配置文件中的标签来配置所需要用到的bean,这里的注解是以JavaConfig的方式配置bean)。

@EnableAutoConfiguration:这个注解比较陌生,但是看其命名Enable(可以)Auto(自动)Configuration(配置);这个注解集中体现了Springboot的优势:自动配置;@EnableAutoConfiguration借助其内部的@Import(AutoConfigurationImportSelector),AutoConfigurationImportSelector类中有selectImports()方法,通过SpringFactoriesLoader来读取spring-boot-autoconfigure包下的META-INF/spring.factories,收集文件中的key,而作为key的这些类,则由@Configuration和@ConditionalOnXXX来将该bean加载到IOC容器中;这就是为什么项目中一些对象不用我们自己去注册或者编写配置类:例如:JdbcTemplate可以直接使用(在以前的spring项目中,还记得我们要在xml文件中配置数据源生成bean吗);RabbitTemplate等等都是这个道理。

@ComponentScan:这个注解大家比较熟悉了,自动扫描并且加载符合条件的组件,最终将这些bean加载到Ioc容器中;一般情况下放在项目根下面保证能扫描到项目中所有的包;细粒度控制使用basePackages属性即可。


上面只是关于该注解最基本的认识和理解,要深究的话最好研究一下springboot项目的启动原理,能更好的理解springboot。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dong__xue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值