一线大牛带你深入解析AutoConfiguration源码( 三 )


@Enable AutoConfiguration 自动配置开关
检查自动配置是否开启的代码位于AutoConfiguratinmportSelector的selectmpots方法第一段中 。如果开启自动配置功能 , 就继续执行后续操作;如果未开启 , 就返回空数组 。 代码如下 。
@Overridepublic String[]selectImports (AnnotationMetadata annotationMetadata) {if (!isEnabled(annotat ionMetadata)) {return NO_ IMPORTS;}}该方法主要使用 isEnabled 方法来判断自动配置是否开启 , 代码如下 。 protected boolean isEnabled(AnnotationMetadata metadata) {if (getClass() == AutoConfigurationImportSelector . class) {return getEnvironment(). getProperty(EnableAutoConfiguration. ENABLED_ _OVERRIDE_ PROPERTY, Boolean.class,true);}return true;}通过 isEnabled 方法可以看出 , 如果当前类为 AutoConfigurationlmportSelector 程序会从环境中获取 key 为 EnableAutoConfiguration.ENABL ED_ OVERRIDE PROPERTY 的配置 , 该常量的值为 spring.boot.enableautoconfiguration.如果获取不到该属性的配置,isEnabled默认为 true,也就是默认会使用自动配置 。 如果当前类为其他类 , 直接返回 true 。
如果想覆盖或重置.ENABLED_ _OVERRIDE_ PROPERTY 的配置 , 可获取该常量的值 , 并在 aplication.properties 或 plcatin.ym|中针对此参数进行配置 。 以 application.properties配置关闭自动配置为例 , 代码如下 。
【一线大牛带你深入解析AutoConfiguration源码】spring.boot.enableautoconfiguration-false本文给大家讲解的内容是AutoConfigurationlmportSelector功能概述和AutoConfiguration自动配置开关

  1. 下篇文章给大家讲解的是AutoConfiguration加载元数据配置和加载自动配置组件;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!


推荐阅读