美文网首页
ApplicationContextInitializer和En

ApplicationContextInitializer和En

作者: engineer_tang | 来源:发表于2023-01-31 10:23 被阅读0次

    在创建spring boot自动加载模块时,会使用到ApplicationContextInitializer和EnableAutoConfiguration,下面一一进行介绍

    1. ApplicationContextInitializer

    @FunctionalInterface
    public interface ApplicationContextInitializer<C extends ConfigurableApplicationContext> {
    
        void initialize(C applicationContext);
    
    }
    

    用于在刷新之前初始化Spring ConfigurationApplicationContext的回调接口。

    通常用于需要对应用程序上下文进行编程初始化的web应用程序中。例如,注册属性源或根据上下文环境激活配置文件。请参阅ContextLoader和FrameworkServlet支持,分别声明“contextInitializerClasses”上下文参数和init参数。

    如果实例之间存在优先级的调用关系,我们鼓励ApplicationContextInitializer处理器通过实现Spring的Ordered接口或者使用@Order注解来进行处理。

    2. EnableAutoConfiguration注解

    启用Spring应用程序上下文的自动配置,尝试猜测和配置您可能需要的bean。自动配置类通常基于类路径和定义的bean来应用。例如,如果您的类路径上有tomcat-embedded.jar,则可能需要一个TomcatServletWebServerFactory(除非您定义了自己的ServletWebSServerFactory bean)。

    使用@SpringBootApplication时,上下文的自动配置会自动启用,因此添加此注释不会产生额外的效果。

    自动配置尝试尽可能智能化,并在您定义更多自己的配置时后退。您始终可以手动exclude()任何您不想应用的配置(如果您没有访问权限,请使用excludeName())。您也可以通过spring.autoconfigure.exclude属性排除它们。自动配置总是在用户定义的bean注册后应用。

    用@EnableAutoConfiguration(通常通过@SpringBootApplication)注释的类的包具有特定的意义,通常用作“默认值”。例如,它将在扫描@Entity类时使用。通常建议您在根包中放置@EnableAutoConfiguration(如果您没有使用@SpringBootApplication),以便可以搜索所有子包和类。

    自动配置类是常规的Spring @Configuration bean。它们是使用SpringFactoriesLoader机制定位的(针对这个类)。通常,自动配置bean是@Conditionalbean(最常用的是@ConditionalOnClass和@ConditionalOnMissingBean注释)。

    相关文章

      网友评论

          本文标题:ApplicationContextInitializer和En

          本文链接:https://www.haomeiwen.com/subject/ooivhdtx.html