@SpringBootApplication 里的三大注解作用

@SpringBootApplication是启动SpringBoot项目的关键注解。点击进入注解源码,可以看到关键的三行注解:@SpringBootConfiguration,@EnableAutoConfiguration和@ComponentScan

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

@SpringBootConfiguration

根据官方文档:

Indicates that a class provides Spring Boot application @Configuration. Can be used as an alternative to the Spring’s standard @Configuration annotation so that configuration can be found automatically (for example in tests).

@SpringBootConfiguration只是Spring标准*@Configuration*批注的替代方法。 两者之间的唯一区别是@SpringBootConfiguration允许自动找到配置。

@EnableAutoConfiguration

@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)

两行关键注解,开启了自动配置,同时会加载所有的配置文件。

@Import注解:

在原生的Spring框架中,组件装配经历了三个阶段:

  1. Spring2.5+,@Component装配Bean
  2. Spring3.0+,使用@Configuration+@Bean,项目启动后,@Bean注入到容器中
  3. Spring3.1+,@EnableXXX+@Import,模块装配注入容器

前两种虽然可用,但是如果有大量的Bean需要注入,将会很麻烦。第三种可以快速批量地装配组件。

@ComponentScan

@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

顾名思义,就是用于扫描组件的注解。默认的是扫描启动文件下的所有包,同时排除了两种类型的类被加载入IOC容器。

  1. 和TypeExcludeFilter类或子类匹配的Bean。所以这里可以指定哪些Bean不会被加入容器。
  2. AutoConfiguration相关文件。因为在@EnableAutoConfiguration中已经把自动配置类加入了容器。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值