@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注解是一个组合注解,其中包括:@SpringBootConfiguration、@EnableAutoCOnfiguration、@ComponentScan

 

@SpringBootConfiguration继承自@Configuration,二者功能一致,标注当前类是配置类,并会将当前类内声名的以@Bean注解标注的方法实例纳入Spring容器中,实例名就是方法名。

@ComponentScan的作用是自动扫描并加载符合条件的的组件或Bean定义,最终将这些Bean加载到容器中。我们可以通过basePackages属性指定扫描的范围,如果不指定,默认扫描当前包及其子包下面的类。

@EnableAutoConfiguration是借助@Import将所有符合自动配置条件的Bean加载到IOC容器。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
}

其中,最关键的是@Import(AutoConfigurationImportSelector.class),借助AutoConfigurationImportSelector这个类,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration都加载IOC容器中,从classpath中搜寻出所有的META/Spring.factories配置文件,并将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的配置项,也就是一个自动配置类列表加载到IOC容器。

简单说,@EnableAutoConfiguration注解让SpringBoot根据类路径下的jar包依赖为当前项目进行自动配置,例如添加spring-boot-starter-web依赖,会自动添加Tomcat和SpringMVC依赖。对于所有使用@Configuration标注的配置类,统一由ConfigurationClassParser解析。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值