SpringBoot三大注解

在SpringBoot的启动类中,只有一个@SpringBootApplication的注解,点进去会发现它是一个复合注解,由@SpringBootConfiguration,@EnableAutoConfiguration和@ComponentScan组成,被称为SpringBoot三大注解

阅读此文前必须了解《ConfigurationClassPostProcessor源码探究与SpringBoot三大注解铺垫》的内容

我们来解决上文提出的两个问题

  • 有时被@ComponentSacn扫到的AutoConfiguration不满足@Conditional条件
  • SpringBoot三大注解( @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 {
    // 省略...
}
复制代码

1 @SpringBootConfiguration

它相当于是一个@Configuration注解,使用它是为了方便在Spring Test中被发现.
本质上属于@Configuration,这是个Spring很很很重要的配置注解,具体使用方法请参考官方文档,源码相关可了解………一文

2 @EnableAutoConfiguration

2.1 AutoConfigurationImportSelector

它实现了自动装配功能,是一个DeferredImportSelector,具体分析可以参考《ConfigurationClassPostProcessor源码探究与SpringBoot三大注解铺垫》的1.4章节

2.2 AutoConfigurationPackage

是一个ImportBeanDefinitionRegistrar,将AutoConfigurationPackages注册到BeanFactory,供其他功能使用,官方注释写的是JPA entity scanner,但暂时我没看到比较常用的做法.

原文 

https://juejin.im/post/5e8990ac51882573c66cfa52

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » SpringBoot三大注解

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址