Я пытаюсь определить следующее свойство в одном из моих файлов .properties:Как получить необработанную стоимость имущества, содержащего заполнители?
personExpression=${person.surname}
Это тот прочитанный класс конфигурации:
@Configuration
public class TemplateConfig {
@Autowired
private Environment environment;
public String getPersonExpression() {
return environment.getProperty("personExpression");
}
}
Однако это дает исключение:
java.lang.IllegalArgumentException: Could not resolve placeholder 'person.surname' in string value "${person.surname}"
Есть ли способ сделать getPersonExpression()
, чтобы вернуть строковый литерал ${person.surname}
, не пытаясь его решить?
Есть ли какая-то дополнительная конфигурация, которую нужно добавить, чтобы получить весну для оценки выражений внутри # {..}? Я попытался изменить свойство на '# {'$' + '{person.surname}'}', но 'getPersonExpression()' просто возвращает '# {'$' + '{person.surname}'}' – IgorK
Вы используя компонент «PropertyPlaceholderConfigurer»? Это должно прочитать ваш файл свойств, проанализировать значения и затем сделать их доступными. Если вы этого не сделаете, файл свойств не будет анализироваться с использованием SpEL. – JamesENL
Да, это была проблема.У меня не было зарегистрирован компонент «PropertyPlaceholderConfigurer», поскольку не было других свойств, которые были оценены. Добавление в \t '@Bean \t общественности статической PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { \t \t возвращение новый PropertySourcesPlaceholderConfigurer(); \t} 'сделал трюк. Кроме того, я немного испортил форматирование и изменил свойство на 'personExpression = # {'$'} {person.surname}', который все еще работает и немного легче читать – IgorK