Если я правильно помню, то есть разница между:
Доступ к системным свойствам можно получить разными способами:
#{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}"/>
)