EnableAutoConfiguration注解简介说明

java-教程王 SpringBoot 发布时间:2022-01-02 22:00:30 阅读数:10982 1
下文笔者将讲述EnableAutoConfiguration注解的简介说明,如下所示:
   EnableAutoConfiguration是SpringBoot的一个特性
   可根据classpath中的jar依赖
    自动注册bean,一般用于类或接口上
    它尝试根据您添加的jar依赖项自动配置Spring应用程序。

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 {};
}
@EnableAutoConfiguration实现的关键在于引入了AutoConfigurationImportSelector
其核心逻辑为selectImports方法
借助AutoConfigurationImportSelector
它可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。

EnableAutoConfiguration注解的原理

当springboot扫描到@EnableAutoConfiguration注解时则会将spring-boot-autoconfigure.jar/META-INF/spring.factories文件
中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的value里的所有xxxConfiguration类加载到IOC容器中
spring.factories文件里每一个xxxAutoConfiguration文件一般都会有下面的条件注解:
@ConditionalOnClass : classpath中存在该类时起效

@ConditionalOnMissingClass : classpath中不存在该类时起效

@ConditionalOnBean : DI容器中存在该类型Bean时起效

@ConditionalOnMissingBean : DI容器中不存在该类型Bean时起效

@ConditionalOnSingleCandidate : DI容器中该类型Bean只有一个或@Primary的只有一个时起效

@ConditionalOnExpression : SpEL表达式结果为true时

@ConditionalOnProperty : 参数设置或者值一致时起效

@ConditionalOnResource : 指定的文件存在时起效

@ConditionalOnJndi : 指定的JNDI存在时起效

@ConditionalOnJava : 指定的Java版本存在时起效

@ConditionalOnWebApplication : Web应用环境下起效

@ConditionalOnNotWebApplication : 非Web应用环境下起效
SpringBoot中EnableAutoConfiguration实现的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法
如下:
  1.从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;
  2.去重,并将exclude和excludeName属性携带的类排除;
  3.过滤,将满足条件(@Conditional)的自动配置类返回;
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringBoot/202201/2132.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者