-
@SpringBootApplication 被这个注解标注的类是一个SpringBoot的应用(主配置类)
-
SpringBoot 就应该运行这个类的main方法来启动SpringBoot的应用
@SpringBootApplication public class HelloworldApplication { public static void main(String[] args) { SpringApplication.run(HelloworldApplication.class, args); } }
//@SpringBootApplication @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 { }
-
-
@SpringBootConfiguration
- 被这个注解标注的类就是Spring Boot的配置类
- @Configuration : Spring定义的
配置类
-
@EnableAutoConfiguration : 开启自动配置
-
Spring需要配置的东西,Spring Boot 会自动配置;告知Spring 自动配置
-
@AutoConfigurationPackage : 自动配置包
-
@Import(AutoConfigurationPackages.Registrar.class) :Spring 注解
-
给容器中导入一个组件
-
由
AutoConfigurationPackages.Registrar.class
指定导入的组件-
Registrar : 静态内部类
@Override public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) { register(registry, new PackageImports(metadata).getPackageNames().toArray(new String[0])); }
-
getPackageNames()
获取SpringBoot主配置类同级包
以及子包
下的所有组件,注册到Spring容器中
-
-
-
-
-
@Import(AutoConfigurationImportSelector.class)
: 自动配置导入选择器- 导入组件选择器
- 将所需要(自动配置)的组件以全限定类名返回; 并将这些组件添加到容器中
- 这些组件是什么?
- SpringBoot导入场景,这些组件就是此场景所需要的组件
- 这些组件是什么?
- 将所需要(自动配置)的组件以全限定类名返回; 并将这些组件添加到容器中
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) { List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()); Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you " + "are using a custom packaging, make sure that file is correct."); return configurations; }
- 导入组件选择器
-
SpringBoot主启动器 简单了解
最新推荐文章于 2022-07-18 11:20:54 发布