Spring モジュール - Mule 4

サポートカテゴリ: 選択

Spring モジュール v1.3

Spring モジュールにより、Mule アプリケーションで Spring Framework を使用できます。

プロジェクトへの Spring モジュールの追加

Anypoint Studio 7 では、デフォルト設定で Spring モジュールが提供されます。

[Mule Palette (Mule パレット)]​ で、「Spring」を検索し、Authorization Filter 操作を Studio キャンバスにドラッグします。

XML のみを使用してプロジェクトをコーディングしている場合、パレットからアプリケーションに Spring モジュールを追加するか、pom.xml​ ファイルに次の連動関係を追加します。

<dependency>
  <groupId>org.mule.modules</groupId>
  <artifactId>mule-spring-module</artifactId>
  <version>RELEASE</version>
  <classifier>mule-plugin</classifier>
</dependency>

Mule Runtime Engine (Mule) により、RELEASE​ キーワードが自動的に最新バージョンに置き換えられます。

Spring モジュール 1.3.0 では Mule 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" />
    
    </mule>
  2. beans.xml​ ファイルを src/main/resources​ に格納します。

    Spring 設定が有効でなければなりません。beans.xml ファイルの例を次に示します。

    <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 ファイルをエクスポートする必要があります。「リソースのエクスポート方法」​を参照してください。

Anypoint Studio 7.2 以降を使用している場合、mule-artifact.json​ ファイルを手動で更新する必要はありません。

Mule では、Spring bean が宣言される記述子も必要であるため、Studio 内の埋め込みパッケージャにより、プロジェクトから取得するすべてのリソースを使用して自動的に生成されます。ただし、エクスポートする必要のあるリソースを宣言する場合、Studio によってそれらのリソースのみがパッケージ化されます。

次の例では、mule-artifact.json​ で beans.xml​ ファイルを宣言できるようにしています。

{
    "name": "MyApp",
    "minMuleVersion": "4.2.1",
    "classLoaderModelLoaderDescriptor": {
        "id": "mule",
        "attributes": {
            "exportedResources": [
                "/org/mule/myapp/beans.xml"
            ]
        }
    }
  }
}

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" />

    <db:config name="derbyConfig" doc:name="Database Config"  >
        <db:derby-connection database="datasource" create="true" />
    </db:config>
</mule>

Spring プロパティプレースホルダ

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

Spring オブジェクトの制限

Spring モジュールを使用するには、実装と挿入の制限を考慮してください。

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

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

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

プレーンテキストのパスワードで Spring Framework 5.x を使用している場合は、パスワード値の先頭に {noop}​ を付ける必要があります。. たとえば、パスワード admin​ は {noop}admin​ になります。

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 認証マネージャを活用した 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" />

  <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" />

  <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"  >
      <http:listener-connection
        host="0.0.0.0"
        port="9090" />
  </http:listener-config>

  <flow name="spring-exampleFlow"  >
    <http:listener
      config-ref="HTTP_Listener_config"
      path="/"
      doc:name="Listener"  />
    <http:basic-security-filter
      realm="mule" />
      <spring:authorization-filter
        requiredAuthorities="ROLE_ADMIN" />
  </flow>
</mule>

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

Was this article helpful?

💙 Thanks for your feedback!