【问题标题】:How to add custom ApplicationContextInitializer to a spring boot application?如何将自定义 ApplicationContextInitializer 添加到 Spring Boot 应用程序?
【发布时间】:2016-05-15 00:41:53
【问题描述】:

将自定义 ApplicationContextInitializer 添加到 Spring Web 应用程序的一种方法是将其添加到 web.xml 文件中,如下所示。

<context-param>
    <param-name>contextInitializerClasses</param-name>
    <param-value>somepackage.CustomApplicationContextInitializer</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

但是由于我使用的是spring boot,有什么方法我不必创建web.xml就可以添加CustomApplicationContextInitializer?

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    您可以在META-INF/spring.factories注册他们

    org.springframework.context.ApplicationContextInitializer=\
    com.example.YourInitializer
    

    您也可以在运行之前将它们添加到您的SpringApplication

    application.addInitializers(YourInitializer.class);
    application.run(args);
    

    或者在构建器上

    new SpringApplicationBuilder(YourApp.class)
        .initializers(YourInitializer.class);
        .run(args);
    

    乍一看从文档中看不出来,所以我打开#5091 进行检查。

    【讨论】:

    • 或属性文件中的context.initializer.classes=com.example.YourInitializer。我喜欢这种方法,因为这样您就可以通过特定于环境的属性文件启用/禁用初始化程序
    • @JeffSheets 它有效,对我来说最方便,您应该将其发布为答案
    【解决方案2】:

    另一种方法是在 properties/yml 文件中使用context.initializer.classes=com.example.YourInitializer。我喜欢这种方法,因为这样您就可以通过特定于环境的 props 文件启用/禁用初始化程序。

    spring boot docs中只简单提及

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2019-06-20
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 2019-12-29
      • 2018-01-14
      相关资源
      最近更新 更多