SpringBoot主启动器 简单了解

  • @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;
      	}
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值