问题
Does using #{systemProperties['environment']} in the applicationcontext.xml file of Spring return the value associated with environment?
Or is there any way to ge the system variable value in the spring applicationcontext.xml file.
回答1:
When I remember right, then there is a difference between:
You can access the system properties in different ways:
#{systemProperties['databaseName']}
#{systemProperties.databaseName}
${databaseName}
//$ instead of # !!
With #{systemProperties['databaseName']}
you have access to system-system-properties.
With #{systemProperties.databaseName}
you have access to the system properties readed for example from the command line (-DdatabaseName="testDB"
).
With ${databaseName}
you have access the the properties from the properties files loaded and provided for example by the PropertyPlaceholderConfigurer and to the system prooperties too
@Value("#{systemProperties['java.version']}")
private String javaVersionMap;
//Dont know how
//@Value("#{systemProperties.javav.version}")
//private String javaVersionDirect;
@Value("${java.version}")
private String javaVersionProp;
//-DcmdParam=helloWorld
@Value("#{systemProperties['cmdParam']}")
private String cmdParamMap;
@Value("#{systemProperties.cmdParam}")
private String cmdParamDirect;
@Value("${cmdParam}")
private String cmdParamProp
You can use all of them in a @Value
annotation or the config.xml files (<property name="databaseName" value="#{systemProperties.databaseName}"/>
)
回答2:
One way to do this kind of thing is to use a PropertyPlaceholderConfigurer which can be configured to use the system properties.
I also noticed that the Spring 3.1 M1 blog entry talks about new stuff for accessing configuration information from "the environment". Of course, that is only a milestone ... not a production-ready release.
来源:https://stackoverflow.com/questions/6285978/is-there-any-syntax-like-systempropertiesenvironment-variable-name-to-g