Spring Язык выражений (SpEL) с @Value: доллар против хэша ($ против #)
Я немного смущен, когда следует использовать ${...}
по сравнению с #{...}
. В документации Spring используется #{...}
, но есть много примеров, которые используют ${...}
. Кроме того, когда я начал с SpEL, мне сказали использовать ${...}
, и он отлично работает.
Для тех, кто запутался, примером того, как я его использую, будет
@Component
public class ProxyConfiguration {
@Value("${proxy.host}")
private String host;
@Value("${proxy.port}")
private String port;
:
}
и некоторый файл свойств:
proxy.host=myproxy.host
proxy.port=8000
Мои вопросы:
- Каковы различия или это одно и то же?
- - одна версия устарела, поэтому я должен использовать другую?
Ответы
Ответ 1
${...}
- синтаксис заполнителя свойства. Его можно использовать только для свойств разыменования.
#{...}
Синтаксис SpEL, который намного более способен и сложнее. Он также может обрабатывать заполнители свойств и многое другое.
Оба действительны, и ни один из них не устарел.
Ответ 2
${expr}
→ Немедленная оценка
#{expr}
→ Отложенная оценка
Немедленная оценка означает, что выражение оценивается, и результат возвращается, как только страница сначала отображается. Отсроченная оценка означает, что технология, использующая язык выражений, может использовать свой собственный механизм для оценки выражения через некоторое время в течение жизненного цикла страниц, когда это целесообразно.
Полная ссылка здесь
Нет JSP EL, JSP использует SpEL. SpEL подходит для технологий, которые его используют.
Ответ 3
Попробуйте прочитать эту статью, в которой предлагается
"Если используется хеш, ваш код пересчитывается каждый раз, когда этот элемент включается в частичное обновление (т.е. каждый раз, когда он отображается). Если вы используете доллар, ваш код вычисляется только при начальной загрузке страницы Но это также было расширено за пределы EL, и SSJS. После хэша или доллара фигурные скобки обозначают начало и конец вашего языка. Это будет важно, когда мы придем к объединению языков позже".
Ответ 4
Спецификация языка выражения • Финальная версия - 8 мая 2006 г.
Страница 2:
Эваль-выражение формируется с использованием конструкций ${expr} или # {expr}. И то и другое
конструкции анализируются и оцениваются точно так же с помощью EL, хотя
они могут иметь различные значения в технологии, использующей EL.