SpringNet从环境变量加载配置文件

本文关键字:配置文件 加载 环境变量 SpringNet | 更新日期: 2023-09-27 18:17:09

我在控制台应用程序中使用c#和Spring Net 1.3.2。

我得到:一个app.cfg一个spring-context.xmlenvironment .xml文件,其中包含根据应用程序运行位置的特定变量值:一个文件夹用于生产,一个用于qa,一个用于测试。

我想达到的目标:在我的shell (windows)中,在使用foo.bat启动应用程序之前,我做:设置环境= "质量"

当Spring加载上下文时,它选择环境变量(例如qa)中包含的值,并加载正确的文件:从而替换:configuration/{environment}/vars.xml

由配置/qa/vars.xml。

在我的my spring-context.xml文件中,我得到了这样的对象:value = ${connectionString。DB1}",其中值在每个vars.xml文件中定义(记住,一个用于prod,一个用于qa…)。

目前,我无法替换${environment}变量。因此,我通过编程方式通过System.Environment.GetEnvironmentVariable(" environment ")获取${environment}的值;和使用Path。合并,自己加载两个上下文:

reader.LoadObjectDefinitions (envPath);reader.LoadObjectDefinitions("配置/共同/springContext.xml");

但:我想用构型来表示。我一直在玩(运气不好):

    <object type="Spring.Objects.Factory.Config.VariablePlaceholderConfigurer, Spring.Core">
      <property name="VariableSources">
        <list>
          <object type="Spring.Objects.Factory.Config.EnvironmentVariableSource, Spring.Core"/>
        </list>
      </property>
    </object>

   <object name="appConfigPropertyHolder"
            type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
       <property name="EnvironmentVariableMode" value="Override"/>
    </object>

有什么想法吗?

SpringNet从环境变量加载配置文件

好的,经过大量的研究,它是有效的!

<object type="Spring.Objects.Factory.Config.VariablePlaceholderConfigurer, Spring.Core">
      <property name="VariableSources">
        <list>
          <object type="Spring.Objects.Factory.Config.EnvironmentVariableSource, Spring.Core"/>      
          <object type="Spring.Objects.Factory.Config.PropertyFileVariableSource, Spring.Core">
            <property name="Location" value="${root.config}/envars.properties" />
            <property name="IgnoreMissingResources" value="false"/>
          </object>
        </list>
      </property>
    </object>
属性文件的

路径取决于环境变量。变量被从属性文件中获得的值所替换。

我部署了一个包含4个环境属性文件的包+文件夹我相应地设置了我的嫉妒值。无需修改app.config或多个Spring配置文件