关于@EnableAutoConfiguration注解的疑问

@SpringBootApplication这个组合注解中有三个主要的注解:@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。
其中@EnableAutoConfiguration注解中有@AutoConfigurationPackage注解,作用是将主程序类所在包及所有子包下的组件到扫描到spring容器中。
而@ComponentScan注解没有参数的情况下,会扫描该类所在包及全部子包下的@Component。
感觉两个的扫描是否重复或覆盖了,为什么@SpringBootApplication组合注解需要包含@ComponentScan呢?

1,两者虽然都能将带有注解的对象放入ioc容器中,但是它们扫描的范围是不一样的。@ComponentScan扫描的范围默认是它所在的包以及子包中所有带有注解的对象,@EnableAutoConfiguration扫描的范围默认是它所在类。
2.它们作用的对象不一样,@EnableAutoConfiguration除了扫描本类带有的注解外,还会 借助@Import的支持,收集和注册依赖包中相关的bean定义,将这些bean注入到ioc容器中,在springboot中注入的bean有两部分组成,一部分是自己在代码中写的标注有@Controller,@service,@Respority等注解的业务bean,这一部分bean就由@ComponentScan将它们加入到ioc容器中,还有一部分是springboot自带的相关bean,可以将这部分bean看成是工具bean,这部分bean就是由@EnableAutoConfiguration负责加入到容器中。
3.@EnableAutoConfiguration可以单独启动springboot项目,而@ComponentScan是不能的。