Поскольку этот вопрос имеет много хитов. Я подумал, что было бы полезно указать другой вариант, используя SpEL (Spring Expression Language) - если вам нужны конкретные свойства, которые они могут быть введены с использованием аннотации @Value для конкретных свойств компонента;
class SomeClass {
@Value("#{serverProperties['com.svr.prop']}")
private String aServerCfgProperty;
@Value("#{someConfig['another.config.setting']}")
private String someOtherProperty;
}
Вам не нужно использовать индексацию синтаксис ['index.val']
вы можете просто получить его непосредственно;
@Value("#{someConfig}")
private Properties someConfig
@Value("#{serverProperties}")
private Properties svrProps;
Я нашел это весьма полезно и отошел от использования свойств объекта непосредственно впрыскивается через @ Resource/@ Autowired.
Еще одна приятная причина использования @Value
с индексированным объектом «Свойства» заключается в том, что некоторые IDE (например, IntelliJ) могут реорганизовывать имена реальных объектов, если у вас также есть файл .properties в проекте. Еще один совет: использовать что-то вроде EProperties (которое расширяет собственный объект свойств Java), если вы хотите сделать включение/вложенность/подстановку в файлах свойств без использования класса Spring PropertiesPlaceholderConfigurer
(который, к сожалению, не раскрывает его свойств), чтобы использовать индексацию Spel ['key']
bean должен быть экземпляр Map<>
, т. е. расширить карту, которую выполняет объект Java Properties).
Наконец, еще одна опрятная функция SpEL - вы можете напрямую получить доступ к свойствам фасоли. Так скажем, например, если SomeClass
в приведенном выше примере был весенним бобом, например. someClass
, тогда в AnotherBeanClass мы могли бы иметь;
@Value("#{someClass.someOtherProperty}")
private String injectedBeanProp
Вы также можете вызвать метод геттер:
@Value("#{someClass.getSomeOtherProperty()}")
private String injectedBeanProp
Смотрите руководство SPEL здесь; http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#expressions
Спасибо за примеры информации и кода! Работы – NightWolf