【问题标题】:Execute piece of java code before spring context initialization starts在spring上下文初始化开始之前执行一段java代码
【发布时间】:2015-09-17 07:03:08
【问题描述】:

在我的应用程序中,spring 配置文件导入基于如下环境属性

<import resource="classpath:/springcontext/text/dao_${environment}.xml" />

正如我们所知,spring 配置导入是在 bean(属性占位符)创建之前解决的。

但我的要求是从 java 代码中将“环境”设置为系统属性,因为环境值不是恒定的,它必须基于一些逻辑来设置 在解决弹簧配置导入之前 我能以某种方式协助 Spring 归档它吗?

【问题讨论】:

  • 您是在谈论 Web 应用程序还是独立应用程序,您使用的是基于 java 的配置还是基于 xml 的
  • 感谢您的回复。它的 Web 应用程序和基于 xml 的配置
  • 这就是接口ApplicationContextInitializer存在的原因。创建一个实现,注册它并完成。另外你真的需要在代码中做吗...为什么不简单地将spring.profiles.active 设置为环境变量?
  • 也不要将其设置为来自ApplicationContextInitializer的java系统属性,您可以简单地指定哪个配置文件处于活动状态

标签: java spring


【解决方案1】:

作为@M。 Denium 正确指出,您可以使用接口 ApplicationContextInitializer 来满足此需求

来自 Spring 文档

公共接口ApplicationContextInitializer

初始化Spring的回调接口 ConfigurableApplicationContext 在被刷新之前。

通常用于需要一些程序化的 Web 应用程序 应用程序上下文的初始化。例如,注册 属性源或针对上下文的激活配置文件 环境。请参阅 ContextLoader 和 FrameworkServlet 支持 声明一个“contextInitializerClasses”上下文参数和初始化参数, 分别。

【讨论】:

    猜你喜欢
    • 2012-07-21
    • 2011-12-05
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多