SpringBoot 自动扫描当前包的原理

1,根据启动类深入注解

//这是我们的启动类
@SpringBootApplication
public class SpringbootBasicApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootBasicApplication.class, args);
    }

}

//点入@SpringBootApplication 注解

//可继承
@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注解

//给ioc容器注入了AutoConfigurationPackages.Registrar
@Import(AutoConfigurationPackages.Registrar.class)
public @interface AutoConfigurationPackage {

2,断点验证

①,计算得到要扫描的包

猜你喜欢

转载自my.oschina.net/u/3574106/blog/1820888