SpringBoot的主程序类详解
以我建的项目工程为例。
主程序类QueueApplication
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class QueueApplication {
public static void main(String[] args) {
//Spring应用启动起来
SpringApplication.run(QueueApplication.class, args);
}
}
@SpringBootApplication
来标注一个主程序类,说明这是一个Spring Boot应用
点进去@SpringBootApplication注解:
点进去@SpringBootConfiguration注解
@Configuration
:配置类上来标注这个注解
配置类-----配置文件;配置类也是容器中的一个组件;@Component
@EnableAutoConfiguration
:开启自动配置功能
以前我们需要配置的东西,Spring Boot帮我们自动配置;
@EnableAutoConfiguration
告诉Spring Boot开启自动配置功能;这样自动配置才能生效
点进去@EnableAutoConfiguration注解
@AutoConfigurationPackage
:自动配置包
@Import({Registrar.class})
:Spring的底层注解@Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackage.Registrar.class
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器
@Import({AutoConfigurationImportSelector.class})
:给容器中导入组件
AutoConfigurationImportSelector:导入哪些组件的选择器
将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中
会给容器中导入非常多的自动配置类(XXXAutoConfiguration):就是给容器中导入这个场景需要的所有组件,并配置好这些组件;有了自动配置类,免去了我们手动编写配置注入功能组件等的工作;
SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);
SpringBoot在启动的时候从类路径下的META-INF/Spring.factories
中获取EnableAutoConfiguration
指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们。
以我的项目为例:
J2EE的整体解决方案和自动配置都在`F:\repmvn\org\springframework\boot\spring-boot-autoconfigure\2.5.3\spring-boot-autoconfigure-2.5.3.jar`