Spring Expression Language (SpEL) avec @Value: dollar vs hash ($ vs. #)

Je suis un peu confus quand utiliser ${...} par rapport à #{...} . La documentation de Spring n’utilise que #{...} , mais il existe de nombreux exemples utilisant ${...} . De plus, quand j’ai commencé avec SpEL, on m’a dit d’utiliser ${...} et ça marche bien.

Pour ceux qui sont confus, un exemple de la façon dont je l’utilise serait

 @Component public class ProxyConfiguration { @Value("${proxy.host}") private Ssortingng host; @Value("${proxy.port}") private Ssortingng port; : } 

et un fichier de propriétés:

 proxy.host=myproxy.host proxy.port=8000 

Mes questions sont:

  • Quelles sont les différences ou est-ce la même chose?
  • une version est-elle obsolète alors je devrais utiliser l’autre?

${...} est la syntaxe d’espace réservé de la propriété. Il ne peut être utilisé que pour déréférencer des propriétés.

#{...} est la syntaxe SpEL , qui est beaucoup plus capable et complexe. Il peut également gérer des espaces réservés de propriété, et bien plus encore.

Les deux sont valides et aucun n’est déconseillé.

${expr} -> Evaluation immédiate

#{expr} -> Evaluation différée

Une évaluation immédiate signifie que l’expression est évaluée et que le résultat est renvoyé dès le premier rendu de la page. L’évaluation différée signifie que la technologie utilisant le langage d’expression peut utiliser sa propre machine pour évaluer l’expression plus tard au cours du cycle de vie de la page, chaque fois que cela est approprié.

Référence complète ici

Il n’y a pas de JSP EL, JSP utilise SpEL. SpEL s’adapte à la technologie qui l’utilise.

Essayez de lire cet article qui suggère

“Si le hachage est utilisé, votre code est recalculé chaque fois que cet élément est inclus dans un rafraîchissement partiel (c’est-à-dire chaque fois qu’il est rendu). Si vous utilisez un dollar, votre code est uniquement calculé lors du chargement initial. Après le hachage ou le dollar, les accolades dénotent le début et la fin de votre langue. Cela sera important lorsque nous combinerons les langues plus tard. ”

Spécification du langage d’expression • Version finale – 8 mai 2006

Page 2:

Une expression eval est formée en utilisant les constructions $ {expr} ou # {expr}. Les deux constructions sont analysées et évaluées exactement de la même manière par l’EL, même si elles peuvent avoir des significations différentes dans la technologie qui utilise l’EL.