Questo contenuto non è disponibile nella lingua selezionata.

Chapter 31. SpEL


Overview

The Spring Expression Language (SpEL) is an object graph navigation language provided with Spring 3, which can be used to construct predicates and expressions in a route. A notable feature of SpEL is the ease with which you can access beans from the registry.

Syntax

The SpEL expressions must use the placeholder syntax, #{SpelExpression}, so that they can be embedded in a plain text string (in other words, SpEL has expression templating enabled).

SpEL can also look up beans in the registry (typically, the Spring registry), using the @BeanID syntax. For example, given a bean with the ID, headerUtils, and the method, count() (which counts the number of headers on the current message), you could use the headerUtils bean in an SpEL predicate, as follows:

#{@headerUtils.count > 4}
Copy to Clipboard Toggle word wrap

Adding SpEL package

To use SpEL in your routes you need to add a dependency on camel-spring to your project as shown in Example 31.1, “Adding the camel-spring dependency”.

Example 31.1. Adding the camel-spring dependency

<!-- Maven POM File -->
<properties>
  <camel-version>2.21.0.fuse-740039-redhat-00001</camel-version>
  ...
</properties>

<dependencies>
  ...
  <dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-spring</artifactId>
    <version>${camel-version}</version>
  </dependency>
  ...
</dependencies>
Copy to Clipboard Toggle word wrap

Variables

Table 31.1, “SpEL variables” lists the variables that are accessible when using SpEL.

Expand
Table 31.1. SpEL variables
VariableTypeDescription

this

Exchange

The current exchange is the root object.

exchange

Exchange

The current exchange.

exchangeId

String

The current exchange’s ID.

exception

Throwable

The exchange exception (if any).

fault

Message

The fault message (if any).

request

Message

The exchange’s In message.

response

Message

The exchange’s Out message (if any).

properties

Map

The exchange properties.

property(Name)

Object

The exchange property keyed by Name.

property(Name, Type)

Type

The exchange property keyed by Name, converted to the type, Type.

XML example

For example, to select only those messages whose Country header has the value USA, you can use the following SpEL expression:

<route>
  <from uri="SourceURL"/>
  <filter>
    <spel>#{request.headers['Country'] == 'USA'}}</spel>
    <to uri="TargetURL"/>
  </filter>
</route>
Copy to Clipboard Toggle word wrap

Java example

You can define the same route in the Java DSL, as follows:

from("SourceURL")
  .filter().spel("#{request.headers['Country'] == 'USA'}")
  .to("TargetURL");
Copy to Clipboard Toggle word wrap

The following example shows how to embed SpEL expressions within a plain text string:

from("SourceURL")
  .setBody(spel("Hello #{request.body}! What a beautiful #{request.headers['dayOrNight']}"))
  .to("TargetURL");
Copy to Clipboard Toggle word wrap
Torna in cima
Red Hat logoGithubredditYoutubeTwitter

Formazione

Prova, acquista e vendi

Community

Informazioni sulla documentazione di Red Hat

Aiutiamo gli utenti Red Hat a innovarsi e raggiungere i propri obiettivi con i nostri prodotti e servizi grazie a contenuti di cui possono fidarsi. Esplora i nostri ultimi aggiornamenti.

Rendiamo l’open source più inclusivo

Red Hat si impegna a sostituire il linguaggio problematico nel codice, nella documentazione e nelle proprietà web. Per maggiori dettagli, visita il Blog di Red Hat.

Informazioni su Red Hat

Forniamo soluzioni consolidate che rendono più semplice per le aziende lavorare su piattaforme e ambienti diversi, dal datacenter centrale all'edge della rete.

Theme

© 2025 Red Hat