Spring モジュールの使用

Spring モジュールにより、Mule アプリケーションで Spring フレームワークを利用することができます。

Spring モジュールをインストールする

Anypoint Exchange からインストールする手順は、次のとおりです。

  1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。

  2. Anypoint Exchange で [Login (ログイン)] をクリックし、Anypoint Platform ユーザ名とパスワードを指定します。

  3. Spring モジュールを検索して [Install (インストール)] をクリックします。

  4. 画面の指示に従ってコネクタをインストールします。

アプリケーションに Spring モジュールを追加するには、Studio パレットを使用するか、または pom.xml ファイルに次の連動関係を追加します。

<dependency>
  <groupId>org.mule.modules</groupId>
  <artifactId>mule-spring-module</artifactId>
  <version>1.3.0</version> <!-- or later -->
  <classifier>mule-plugin</classifier>
</dependency>

Spring モジュール 1.3.0 では Mule Runtime 4.1.1 が必要です。旧バージョン用の連動関係を入手するには、 Exchange でバージョンを選択してから [Dependency Snippets (連動関係スニペット)] をクリックしてください。

Spring モジュールを設定する

  1. 次の設定を追加します。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <mule xmlns:spring="http://www.mulesoft.org/schema/mule/spring"
          xmlns="http://www.mulesoft.org/schema/mule/core"
          xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
            http://www.mulesoft.org/schema/mule/core/current/mule.xsd
            http://www.mulesoft.org/schema/mule/spring
            http://www.mulesoft.org/schema/mule/spring/current/mule-spring.xsd">
    
        <spring:config name="springConfig" files="beans.xml" doc:id="8623553f-16f6-45d9-acef-e23764e05bf8" />
    
    </mule>
  2. beans.xml ファイルを src/main/resources に格納します。

    Spring 設定が有効でなければなりません。例を挙げます。

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    
        xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
          http://www.springframework.org/schema/jdbc
          http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd
          http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-4.2.xsd
          http://www.springframework.org/schema/security
          http://www.springframework.org/schema/security/spring-security-4.2.xsd">
    
        <jdbc:embedded-database id="dataSource" type="DERBY">
            <jdbc:script location="classpath:db/sql/create-db.sql" />
            <jdbc:script location="classpath:db/sql/insert-data.sql" />
        </jdbc:embedded-database>
    
    </beans>
Spring モジュールで使用する beans ファイルをエクスポートする必要があります。そうしないと、アプリケーションが起動しません。「リソースのエクスポート方法」を参照してください。

Mule コンポーネントでの Spring オブジェクトの使用

Spring オブジェクトを Mule 設定コンポーネントで使用することで、たとえば、Spring Bean で作成した Derby データソースを参照できます。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:db="http://www.mulesoft.org/schema/mule/db"
      xmlns:spring="http://www.mulesoft.org/schema/mule/spring"
      xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
        http://www.mulesoft.org/schema/mule/core/current/mule.xsd
        http://www.mulesoft.org/schema/mule/spring
        http://www.mulesoft.org/schema/mule/spring/current/mule-spring.xsd
        http://www.mulesoft.org/schema/mule/db
        http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd">

    <spring:config name="springConfig" files="beans.xml" doc:id="8623553f-16f6-45d9-acef-e23764e05bf8" />

    <db:config name="derbyConfig" doc:name="Database Config" doc:id="06993a86-2062-4c9a-b9a9-a663ff6b2eed" >
        <db:derby-connection database="datasource" create="true" />
    </db:config>
</mule>

Spring プロパティプレイスホルダの使用

Spring プロパティプレイスホルダで定義されているプロパティは、Spring 設定ファイルでのみ使用でき、Mule アプリケーション設定では使用できません。ただし、Mule で <configuration-properties/> を使用して定義したプロパティは、Spring 設定ファイルで使用できます。

Spring オブジェクトの制限

  • Spring オブジェクトでは、Mule API ライフサイクルメソッドを実装することはできません。

  • Spring オブジェクトは、Mule API サービスでは挿入できません。使用できる唯一のサービスは org.mule.runtime.api.artifact.Registry で、Mule API 内の他のすべてのサービスへのアクセスに使用できます。この場合は、@PostConstruct をメソッドに対して使用することで、オブジェクトを初期化して Mule API サービスを取得します。

Spring セキュリティのセキュリティマネージャとしての使用

Spring モジュールでは、Spring セキュリティを Mule アプリケーションのセキュリティマネージャとして使用できます。

Spring 設定ファイルで、認証マネージャを定義する必要があります。次に例を示します。

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  xmlns:ss="http://www.springframework.org/schema/security"

  xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
      http://www.springframework.org/schema/jdbc
      http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-4.2.xsd
      http://www.springframework.org/schema/security
      http://www.springframework.org/schema/security/spring-security-4.2.xsd">

  <ss:authentication-manager alias="authenticationManager">
    <ss:authentication-provider>
      <ss:user-service id="userService">
        <ss:user name="admin" password="admin" authorities="ROLE_ADMIN" />
        <ss:user name="joe" password="secret" authorities="ROLE_ADMIN" />
        <ss:user name="anon" password="anon" authorities="ROLE_ANON" />
        <ss:user name="user" password="password" authorities="ROLE_ANON" />
        <ss:user name="ross" password="ross" authorities="ROLE_ANON" />
        <ss:user name="marie" password="marie" authorities="ROLE_ANON" />
      </ss:user-service>
    </ss:authentication-provider>
  </ss:authentication-manager>

</beans>
Spring Framework 5.x でプレーンテキストのパスワードを使用している場合は、パスワードの先頭に {noop} を付ける必要があります。上の例では、パスワードの admin を {noop}admin と指定します。

Spring 認証マネージャを活用した Mule アプリケーションのセキュリティマネージャは、次のように定義できます。

<?xml version="1.0" encoding="UTF-8"?>
<mule
  xmlns:spring="http://www.mulesoft.org/schema/mule/spring"
  xmlns="http://www.mulesoft.org/schema/mule/core"
  xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-current.xsd
    http://www.mulesoft.org/schema/mule/core
    http://www.mulesoft.org/schema/mule/core/current/mule.xsd
    http://www.mulesoft.org/schema/mule/spring
    http://www.mulesoft.org/schema/mule/spring/current/mule-spring.xsd">

  <spring:config name="springConfig" files="beans.xml" doc:id="8623553f-16f6-45d9-acef-e23764e05bf8" />

  <spring:security-manager>
    <spring:delegate-security-provider name="memory-provider" delegate-ref="authenticationManager" />
  </spring:security-manager>

</mule>

Spring 認証検索条件を使用した認証の検証

Spring モジュールは、Mule セキュリティマネージャを使用して認証を検証できない場合に失敗する検索条件をサポートします。次に例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<mule
  xmlns:http="http://www.mulesoft.org/schema/mule/http"
  xmlns:db="http://www.mulesoft.org/schema/mule/db"
  xmlns:spring="http://www.mulesoft.org/schema/mule/spring"
  xmlns="http://www.mulesoft.org/schema/mule/core"
  xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-current.xsd
    http://www.mulesoft.org/schema/mule/core
    http://www.mulesoft.org/schema/mule/core/current/mule.xsd
    http://www.mulesoft.org/schema/mule/spring
    http://www.mulesoft.org/schema/mule/spring/current/mule-spring.xsd
    http://www.mulesoft.org/schema/mule/db      http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
    http://www.mulesoft.org/schema/mule/http
    http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">

  <spring:config name="springConfig" files="beans.xml" doc:id="8623553f-16f6-45d9-acef-e23764e05bf8" />

  <spring:security-manager>
    <spring:delegate-security-provider name="memory-provider" delegate-ref="authenticationManager" />
  </spring:security-manager>

  <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="75a02b96-91d0-4850-899c-1af6578a6d09" >
      <http:listener-connection host="0.0.0.0" port="9090" />
  </http:listener-config>

  <flow name="spring-exampleFlow" doc:id="a70ad320-475c-42db-be69-a589589c93c7" >
    <http:listener config-ref="HTTP_Listener_config" path="/" doc:name="Listener" doc:id="37ac75b8-9c40-492b-97fa-9e1d2a0c708f" />
    <http:basic-security-filter realm="mule" />
      <spring:authorization-filter requiredAuthorities="ROLE_ADMIN" doc:id="64de0fab-6550-4ac3-b91c-543dd61a9a06" />
  </flow>
</mule>

http:basic-security-filter は、基本認証を使用してユーザを認証しようとします。認証に成功すると、Mule はユーザ名を取得し、Spring の authorization-filter で使用してそのユーザを検索し、ROLE_ADMIN 権限で要求を承認しようとします。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub