我正在使用spring mvc项目,因为常量不同于开发环境和生产环境。如何在spring中提供常规文件以外的常量文件或根据环境提供常量的任何替代方法
答案 0 :(得分:1)
如果常量取决于环境,那么我更喜欢将它们放在Application Server Context中。
例如,如果您将此代码段放在tomcat context.xml
(或特定于应用程序的上下文文件)中
<?xml version="1.0" encoding="UTF-8"?>
<Context>
...
<Parameter name="myConfig" value="123" override="false" />
</Context>
然后您可以像使用任何其他配置参数一样在Spring中使用参数myConfig
。
<bean class="Demo">
<property name="config" value="${myConfig}"/>
</bean>
答案 1 :(得分:1)
我不建议使用Container的Context,因为它将你的webapp耦合到特定的容器提供者(上下文params不是标准化的,不是吗?)。
我在这种情况下使用的是以下解决方案:
config.properties
export MY_CONFIG=/usr/share/myapp
。 在两种环境中执行此操作(执行目录可能会更改)。但是你的配置在这个目录中。$(env.MY_CONFIG}
,以在Spring中加载属性。这样,您将有两种不同的配置设置用于开发和实时环境。简单但功能强大,因为您可以在CVS中使用此配置,甚至可以使用一些资源重载来使其更加灵活。
答案 2 :(得分:0)
我更喜欢使用PropertyPlaceholderConfigurer
s (docs)。自定义版本可以通过-Doption.foo.bar=xxx
开关基于各种事物(如服务器和/或用户名)和/或命令行java选项来解析属性文件。
由于多种原因,我更倾向于使用上下文变量,主要是为了(a)保持服务器中立的配置更改,以及(b)允许在没有服务器干预的情况下“按需”切换配置。