Expresiones SpEL en Java

Spring 3 presenta Spring Expression Language (Spring Expression Language, SpEL), que puede ensamblar valores en propiedades de bean y parámetros de constructor de una manera poderosa y concisa. Las expresiones utilizadas en este proceso se ejecutarán valor calculado cuando

SpEL tiene muchas características, que incluyen:

Use la identificación del bean para referirse al bean

Llamar a métodos y acceder a las propiedades de los objetos.

Realizar operaciones aritméticas, relacionales y lógicas sobre valores

coincidencia de expresiones regulares

establecer la operación

Expresión base SpEL

representa un valor literal

representa un valor de punto flotante

#{
    
    3.1415}

Los valores también se pueden expresar en notación científica

#{
    
    9.87E4}

El valor calculado por la expresión es 98.700

Se utiliza para calcular valores literales de tipo String

#{
    
    'HELLO'}

Los valores literales verdadero y falso se evalúan a sus correspondientes valores booleanos

#{
    
    flase}

Frijoles de referencia, propiedades y métodos

Otra cosa básica que SpEL puede hacer es referirse a otros beans por ID. Por ejemplo, puede usar SpEL para conectar un bean a una propiedad de otro bean

Usar bean ID como expresión SpEL

#{
    
    sgtPeppers}

sgtPeppers为beanID

Haga referencia al atributo de artista de sgtPeppers

#{
    
    sgtPeppers.artist}

Se hace referencia a un bean con un ID de sgtPeppers, seguido de una referencia al atributo del artista

Llame al método selectArtist() de artistSelector

#{
    
    artistSelector.selectArtist()}

Se hace referencia a un bean cuyo ID es artistSelector, y se llama al método selectArtist() del bean

Para el valor de retorno del método llamado, también podemos llamar a su método

#{
    
    artistSelector.selectArtist().toUpperCase()}

Si el método selectArtist() devuelve una cadena, puede llamar

Use toUpperCase() para cambiar todas las cadenas a mayúsculas

Si el valor de retorno de selectArtist() es nulo, se producirá una NullPointerException y podemos usar operadores de tipo seguro

#{
    
    artistSelector.selectArtist()?.toUpperCase()}

En lugar de simplemente usar un punto ( . ) para acceder al método toUpperCase(), ahora usamos el operador "?". Este operador se asegura de que el elemento al que corresponde no sea nulo antes de acceder al contenido a su derecha. Entonces, si el valor de retorno de selectArtist() es nulo, entonces SpEL no llamará al método toUpperCase(). El valor de retorno de la expresión será nulo

Usar tipos en expresiones

Si desea acceder a métodos y constantes del alcance de la clase en SpEL, debe confiar en el operador clave T()

Para expresar la clase Math de Java en SpEL, el operador T() debe usarse de la siguiente manera

T(java.lang.Math).PI

Cableado de valores de PI en propiedades de bean

Un método estático del tipo obtenido por el operador T() puede llamarse:

T(java.lang.Math).random()

Calcular un número aleatorio entre 0 y 1

operador SpEL

Combinar expresiones simples en expresiones más complejas

calcular

#{
    
    T(java.lang.Math).PI * circle.radius ^ 2}

Calcula el área del círculo definido en el frijol círculo.

Cuando se utiliza un valor de tipo String, el operador "+" realiza una operación de concatenación, igual que en Java

operador de comparación

#{
    
    counter.total == 100}
#{
    
    counter.total eq 100}

Para comparar la igualdad de dos números, puede usar el operador de doble igual

También puede usar el operador eq literal

La expresión se evalúa como un valor booleano.

Operador ternario (ternario)

#{
    
    scoreboard.score > 1000 ? "winner" : "loser"}

A juzgar si scoreboard.score>1000, el resultado del cálculo es "¡Ganador!" de la clase String, de lo contrario, el resultado es Perdedor

Un caso de uso común para el operador ternario es verificar valores nulos y reemplazar nulo con un valor predeterminado

#{
    
    disc.title ?: 'Rattleand Hum'}

Juzgará si el valor de disc.title es nulo, si es nulo, entonces el resultado del cálculo de la expresión será "Rattle and Hum"

Evaluar expresiones regulares

Cuando se trabaja con texto, a veces resulta útil comprobar si el texto coincide con un determinado patrón. SpEL admite la coincidencia de patrones en expresiones a través del operador de coincidencias. operación de partidos

Aplica una expresión regular (como argumento de la derecha) a un texto de tipo String (como argumento de la izquierda). El resultado de la operación de coincidencias devolverá un valor de tipo booleano: si con

Devuelve verdadero si la expresión regular coincide; de ​​lo contrario, devuelve falso

#{
    
    admin.email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9._%+-]+\\.com'}

Comprobar si una cadena contiene una dirección de correo electrónico válida

Calcular colección

hace referencia a un elemento en una lista

#{
    
    jukebox.song[4].title}

Calcule el atributo de título del quinto elemento (de base cero) en la colección de canciones, que se deriva del bean jukebox con el ID

Elija al azar de jukebox

#{
    
    jukebox.song [T(java.lang.Math).random() * jukebox.songs.size() ].title}

El operador "[]" se usa para obtener un elemento de una colección o un arreglo por índice, de hecho, también puede obtener un carácter de un String

#{
    
    'this is a test' [3]}

Hace referencia al cuarto carácter (basado en cero) en String, que es "s"

operador de consulta ( .?[])

Se utiliza para filtrar la colección para obtener un subconjunto de la colección.

#{
    
    jukebox.songs.?[artist eq 'Aerosmith']}

Para obtener todas las canciones en la máquina de discos cuyo atributo de artista sea Aerosmith, el operador de selección acepta otra expresión entre corchetes. Cuando SpEL itera sobre la lista de canciones, evalúa esta expresión para cada entrada en la colección de canciones. Si la expresión se evalúa como verdadera, la entrada se coloca en la nueva colección. De lo contrario, no se colocará en la nueva colección. En este caso, la expresión interna verifica si la propiedad del artista de la canción es igual a Aerosmith.

“.^[]”和“.$[]”, que se utilizan para consultar la primera y la última coincidencia de la colección, respectivamente

El operador de proyección ( .![]), que selecciona atributos específicos de cada miembro de una colección y los coloca en otra colección

Nota:

El entorno anterior se probó con éxito en ubuntu16.04 lts

Los textos anteriores son opiniones personales, si hay algún error o sugerencia, contácteme a tiempo.

Supongo que te gusta

Origin blog.csdn.net/qq_54042324/article/details/122073047
Recomendado
Clasificación