predhme
你提出了一种将环境变量读入Spring Bean然后“能够将其传递到FileSystemResource”的方法。
这里:
Can I use an Environment variable based location for Spring FileSystemResource?
您能解释一下如何将变量传递给FileSystemResource吗?
谢谢!
查理
答案 0 :(得分:0)
答案 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 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