Весенний язык выражений (SpEL) с @Value: доллар против hashа ($ против #)

Я немного смущен, когда использовать ${...} по сравнению с #{...} . Документация 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 

Мои вопросы:

  • каковы различия или одно и то же?
  • одна версия устарела, поэтому я должен использовать другую?

${...} – синтаксис заполнителя свойства. Его можно использовать только для разыменования свойств.

#{...} является синтаксисом SpEL , который намного более способен и сложнее. Он также может обрабатывать заполнители свойств и многое другое.

Оба действительны, и ни один из них не устарел.

${expr} -> Немедленная оценка

#{expr} -> Отложенная оценка

Непосредственная оценка означает, что выражение оценивается, и результат возвращается, как только страница сначала отображается. Отсроченная оценка означает, что технология, использующая язык выражения, может использовать свой собственный механизм для оценки выражения через некоторое время во время жизненного цикла страницы, когда это целесообразно.

Полная ссылка здесь

Нет JSP EL, JSP использует SpEL. SpEL подходит для технологий, которые его используют.

Попробуйте прочитать эту статью , которая предлагает

«Если используется хеш, ваш код пересчитывается каждый раз, когда этот элемент включается в частичное обновление (т. Е. Каждый раз, когда он отображается). Если вы используете доллар, ваш код вычисляется только при начальной загрузке страницы. был расширен за пределы только EL, к SSJS. После hashа или доллара фигурные скобки обозначают начало и конец вашего языка. Это будет важно, когда мы придем к объединению языков позже ».

Спецификация языка выражений • Окончательный выпуск – 8 мая 2006 г.

Страница 2:

Эваль-выражение формируется с использованием конструкций $ {expr} или # {expr}. Обе конструкции анализируются и оцениваются точно таким же образом с помощью EL, даже если они могут иметь различные значения в технологии, использующей EL.

  • Как регистрировать HttpRequest и HttpResponse в файле?
  • Отключить безопасность для модульных тестов с весенней загрузкой
  • Как я могу зарегистрировать глобальный настраиваемый редактор в Spring-MVC?
  • Каковы преимущества контейнеров для инъекций зависимостей?
  • Как установить заголовок «Принять:» в запросе Spring RestTemplate?
  • Spring Autowiring class vs. interface?
  • получение исключения: не определен bean с именем «springSecurityFilterChain»
  • Как получить объект сеанса весной?
  • Самовсасывание с пружиной
  • Данные Spring: поддерживается «delete by»?
  • Невозможно Autowire @Repository аннотированный интерфейс в Spring Boot
  • Давайте будем гением компьютера.