Есть ли такой синтаксис, как: # {systemProperties ['environment_variable_name']}, чтобы получить системную переменную? - PullRequest
12 голосов
/ 09 июня 2011

Возвращает ли значение # {systemProperties ['environment']} в файле applicationcontext.xml в Spring значение, связанное со средой?

Или есть способ получить значение системной переменной в весеннем файле applicationcontext.xml.

Ответы [ 2 ]

27 голосов
/ 09 июня 2011

Если я правильно помню, то есть разница между:

Доступ к системным свойствам можно получить разными способами:

  • #{systemProperties['databaseName']}
  • #{systemProperties.databaseName}
  • ${databaseName} // $ вместо # !!

С #{systemProperties['databaseName']} у вас есть доступ к system-system-properties.

С помощью #{systemProperties.databaseName} вы получаете доступ к системным свойствам, прочитанным, например, из командной строки (-DdatabaseName="testDB").

С помощью ${databaseName} у вас есть доступ к свойствам из файлов свойств, загруженных и предоставленных, например, PropertyPlaceholderConfigurer , а также к свойствам системы

@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

Вы можете использовать их все в аннотации @Value или в файлах config.xml (<property name="databaseName" value="#{systemProperties.databaseName}"/>)

4 голосов
/ 09 июня 2011

Один из способов сделать это - использовать PropertyPlaceholderConfigurer, который можно настроить для использования системных свойств.

Я также заметил, что запись в блоге Spring 3.1 M1 говорит оновый материал для доступа к информации о конфигурации из «среды».Конечно, это только веха ... не готовый к выпуску релиз.

...