跳至主要內容

自动扫描

chanchaw大约 1 分钟languagejavaspring

概述

注解 @SpringBootApplication 中包含注解 @AutoConfigurationPackage,该注解会自动配置包,将“主配置类”(注解 @SpringBootApplication 标注的类)所在包下的所有子包内的所有组件全部加入 spring 容器中。 一般该主配置类在项目的根目录下,即和所有子包同级。例如项目名称是 com.xdf.callcenter,那么主配置类 SpringBootApplication 就在该目录下,其他子包是:com.xdf.callcenter.controller , com.xdf.callcenter.model , com.xdf.callcenter.service , com.xdf.callcenter.utils 等等。

注解介绍

@SpringBootApplication

该注解用于 springboot 项目的主配置类上,包含了N多注解。其中起到关键作用的是 @EnableAutoConfiguration

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

@EnableAutoConfiguration

@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage

本注解的作用是扫描所在类所在的目录下的所有子目录下使用了组件注解的类(例如:@Service , @Repository , @Controller 等),通过嵌套在 @EnableAutoConfiguration 再嵌套在 @SpringBootApplication 中起到作用

@Import({AutoConfigurationImportSelector.class})

表示给容器导入一个或者一批组件,导入组件由于后面注明的类 AutoConfigurationImportSelector.class 决定 该类返回需要导入的组件的全限定名构成的字符串数组