#java #spring #spring-mvc #jakarta-ee #system-variable
#java #spring #spring-mvc #джакарта-ee #системная переменная
Вопрос:
Использует ли #{SystemProperties[‘environment’]} в applicationcontext.xml файл Spring возвращает значение, связанное со средой?
Или есть какой-либо способ изменить значение системной переменной весной applicationcontext.xml .
Комментарии:
1. Вы говорите о системных свойствах или переменных среды? Это две разные вещи, вы знаете…
Ответ №1:
Если я правильно помню, то есть разница между:
Вы можете получить доступ к системным свойствам различными способами:
#{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}"/>
)
Комментарии:
1. Кто-нибудь знает правильные имена для этих двух разных системных свойств (предоставляемых системой и командной строкой)?
2. такой вещи не существует. Версия командной строки устанавливает «реальные» системные свойства: download.oracle.com/javase/6/docs/technotes/tools/windows/… . Такая разница существует только в Maven: системные свойства (командная строка) против свойств проекта (pom.xml )
3. @Шон Патрик Флойд: Я протестировал это, и вы правы (видно, что мои записи были неправильными). — Я исправил ответ
Ответ №2:
Один из способов сделать такого рода вещи — использовать PropertyPlaceholderConfigurer, который может быть настроен на использование системных свойств.
Я также заметил, что в записи в блоге Spring 3.1 M1 говорится о новых материалах для доступа к информации о конфигурации из «среды». Конечно, это только веха … не готовый к производству релиз.