316.3. サンプル


316.3.1. 式テンプレート

式のテンプレート化が有効になっているため、SpEL 式は #{ } 区切り記号で囲む必要があります。これにより、SpEL 式を通常のテキストと組み合わせて、これを非常に軽量なテンプレート言語として使用できます。

たとえば、次のルートを構築するとします。

from("direct:example")
    .setBody(spel("Hello #{request.body}! What a beautiful #{request.headers['dayOrNight']}"))
    .to("mock:result");

上記のルートで、spel は org.apache.camel.language.spel.SpelExpression.spel からインポートする必要がある静的メソッドであることに注意してください。これは、setBody メソッドにパラメーターとして渡される Expression として spel を使用するためです。fluent API を使用する場合は、代わりにこれを行うことができます。

from("direct:example")
    .setBody().spel("Hello #{request.body}! What a beautiful #{request.headers['dayOrNight']}")
    .to("mock:result");

setBody() メソッドの spel メソッドを使用していることに注意してください。そして、これは org.apache.camel.language.spel.SpelExpression.spel から spel メソッドを静的にインポートする必要はありません。

そして、本文に文字列 "World"、ヘッダー "dayOrNight"、値 "day" を含むメッセージを送信しました。

template.sendBodyAndHeader("direct:example", "World", "dayOrNight", "day");

mock:result の出力は、"Hello World!What a beautiful day" となります。

316.3.2. Bean インテグレーション

SpEL 式で、レジストリー (ほとんどの場合 ApplicationContext) で定義された Bean を参照できます。たとえば、ApplicationContext に "foo" という名前の Bean がある場合、次のようにこの Bean で "bar" メソッドを呼び出すことができます。

#{@foo.bar == 'xyz'}

316.3.3. エンタープライズ統合パターンでの SpEL

Recipient List の式として、または Message Filter 内の述語として SpEL を使用できます。

<route>
  <from uri="direct:foo"/>
  <filter>
    <spel>#{request.headers['foo'] == 'bar'}</spel>
    <to uri="direct:bar"/>
  </filter>
</route>

そして、Java DSL で同等のもの:

from("direct:foo")
    .filter().spel("#{request.headers['foo'] == 'bar'}")
    .to("direct:bar");
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.