Springboot 2.X @EnableAutoConfiguration  注解

@EnableAutoConfiguration 
  1.该注解包含了@AutoConfigurationPackage注解;
  2.@EnableAutoConfiguration注解,使Springboot可以自动配置,
    可以找到主配置类@SpringBootApplication所在类的包,将该包和所有的子包全部纳入Spring容器;
     传统的应用需要手动将类所在包(控制器)手工写入scan扫描器中(加入spring容器),springboot不需要手动配置;
  3.springboot项目中
     a.自己写的代码;
     b.引入的第三方依赖
       通过AutoConfigurationImportSelector类中selectImports()方法引入第三方依赖;
       Springboot启动是会根据 META-INF/spring-autoconfigure-metadata.properties找到三方依赖并这些依赖引入本项目;
       META-INF/spring.factories
       Spring-boot-autoconfigure-2.1.3.RELEASE.jar-->META-INF/spring.factorie
       @EnableAutoConfiguration 

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

    Class<?>[] exclude() default {};

    String[] excludeName() default {};
}

@AutoConfigurationPackage

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({Registrar.class})
public @interface AutoConfigurationPackage {
}

selectImports()

 public String[] selectImports(AnnotationMetadata annotationMetadata) {
        if (!this.isEnabled(annotationMetadata)) {
            return NO_IMPORTS;
        } else {
            AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);
            AutoConfigurationImportSelector.AutoConfigurationEntry autoConfigurationEntry = this.getAutoConfigurationEntry(autoConfigurationMetadata, annotationMetadata);
            return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());
        }
    }
 public static AutoConfigurationMetadata loadMetadata(ClassLoader classLoader) {
        return loadMetadata(classLoader, "META-INF/spring-autoconfigure-metadata.properties");
    }


4.总结:
   传统的项目中一般会对自己的写得代码以及第三方依赖进行配置,
    在springboot中可以自动配置,不需要我们自己配置;
     a.自己写的代码(Controller)通过Sprinboot通过@EnableAutoConfiguration帮我们自动配置;
     b.第三方依赖通过Spring-boot-autoconfigure-2.1.3.RELEASE.jar-->META-INF/spring.factories进行申明,
       然后通过@EnableAutoConfiguration开启使用;
     c.Spring-boot-autoconfigure-2.1.3.RELEASE.jar包中包含了J2EE整合体系中需要的依赖;
     
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值