如何将变量传递给FileSystemResource?

时间:2011-09-18 02:31:10

标签: java spring

predhme

你提出了一种将环境变量读入Spring Bean然后“能够将其传递到FileSystemResource”的方法。

这里:

Can I use an Environment variable based location for Spring FileSystemResource?

您能解释一下如何将变量传递给FileSystemResource吗?

谢谢!

查理

2 个答案:

答案 0 :(得分:0)

您想使用PropertyPlaceholderConfigurer

完成设置后,您应该能够使用以下内容提取任何环境变量:

${variableName}

配置文件中的任何位置的语法。

答案 1 :(得分:0)

我不喜欢为这些个别变量设置系统属性。您可能会变成数百个可能需要设置的系统属性。相反,正如其他人所建议的那样,将属性文件放在构建之外,并将属性文件的位置指定为系统属性。

使用环境更改的属性,在构建之外的属性文件(JAR / WAR ..)中有助于构建良好的构建。

blog post可能会有所帮助。

或类似的内容如下:

使用属性占位符配置程序

<bean id="myConfigPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="${my.sys.variable}/fooModule/foo.properties" p:placeholderPrefix="#foo{" p:placeholderSuffix="}" />

注入豆子


@Value("#foo{some.key.defined.in.fooPropertiesFile}")
 String myFileSystemResourcePath;

(或)

使用util:properties

<util:properties id="fooProps" location="file:///${my.sys.variable}/fooModule.properties/>

注入豆子


@Value("#fooProps[some.key.defined.in.fooPropertiesFile]")
 String myFileSystemResourcePath;

注意:定义property-placeholder-configurer bean时,支持不同的语法变体。你可以选择任何一个。另外,不是使用@Value注入,而是可以使用$ {variableName}作为 dlawrence 建议在xml文件中引用该属性。

设置环境变量

一个项目的

设置envVariable,在本例中my.sys.variable可以完成 project-->(right click)-->run as-->run as configurations-->vm arguments and there: -Dmy.sys.variable=file:///D:/myBaseDir

全局

如果要在eclipse中与不同项目共享此envProp,那么您可以

Windows->Preferences->Java->Installed JREs->(select the jre)->edit->default vm arguments->and set it with something like -Dmy.sys.variable=file:///D:/myBaseDir