120 votes

Le printemps de l'Expression de la Langue (SpEL) avec @Valeur: dollar vs hachage ($ vs #)

Je suis un peu confus au sujet de quand utiliser ${...} par rapport à l' #{...}. Le printemps de la documentation utilise #{...}, mais il y a beaucoup d'exemples d'utilisation de ${...}. De plus, quand j'ai commencé avec SpEL m'a dit d'utiliser ${...} et il fonctionne très bien.

Pour ceux qui sont confus, un exemple de la façon dont j'utilise ce serait

@Component
public class ProxyConfiguration {

    @Value("${proxy.host}")
    private String host;
    @Value("${proxy.port}")
    private String port;

    :
}

et certains fichier de propriétés:

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

Mes questions sont les suivantes:

  • quelles sont les différences ou est-il le même?
  • est une version obsolète donc je doit utiliser l'autre?

131voto

skaffman Points 197885

${...} est la propriété de l'espace réservé à la syntaxe. Il ne peut être utilisé pour déréférencer les propriétés.

#{...} est SpEL syntaxe, qui est beaucoup plus performant et complexe. Il peut également gérer les biens des espaces réservés, et beaucoup plus encore.

Les deux sont valables, et ni est obsolète.

9voto

XvrCJ Points 61
${expr}  --> Immediate Evaluation

#{expr}  --> Deferred Evaluation

"L'évaluation immédiate signifie que l'expression est évaluée et le résultat retourné dès que la page est rendu pour la première fois. L'évaluation différée signifie que la technologie en utilisant le langage d'expression peut utiliser ses propres machines pour évaluer l'expression un peu plus tard au cours de la page du cycle de vie, chaque fois qu'il est approprié de le faire." Complet-référence

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

-1voto

chrisp7575 Points 123

Essayez de lire cet article, ce qui suggère

"Si le hachage est utilisée, votre code est recalculé à chaque fois que l'élément est inclus dans un partiel d'actualisation (c'est à dire à chaque fois qu'il est rendu). Si vous utilisez un dollar, votre code est calculé uniquement lorsque la page est initialement chargé. Mais cette période a été prolongée au-delà de juste EL, à SSJS trop. Après le hachage ou le dollar, les accolades indiquer le début et la fin de votre langue. Ce sera important lorsque nous arrivons à la combinaison de langues plus tard."

-4voto

Mellon Points 1

Expression Du Langage De Spécification • Version Finale - 8 Mai 2006

Page 2:

Un eval-l'expression est formé en utilisant les constructions ${expr} ou #{expr}. Les deux les constructions sont analysés et évalués exactement de la même manière par la EL, même si ils peuvent transporter des significations différentes dans la technologie qui est à l'aide de l'EL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X