Springのための宣言的キャッシングサービス
Pages: 1, 2, 3, 4

BeanNameAutoProxyCreator

BeanNameAutoProxyCreatorを利用すると、メタデータ属性によるアプローチと同様に、特別なコンフィグレーションなしに、Spring IoCコンテナで、たくさんのBeanに対する宣言的キャッシングサービスを設定できます。メタデータ属性のアプローチと異なるのは、 BeanNameAutoProxyCreatorでは、Javaソースコードへの変更が一切必要ない点です。

BeanNameAutoProxyCreatorを利用すると、多数のBeanに対して、1つ以上のメソッドインターセプタを適用できます。一度キャッシング設定をして、Beanの名前をプロキシクリエイタに提供する必要があるだけです。以下の例は、 BeanNameAutoProxyCreatorにおけるキャッシング関連のメソッドインタセプタの指定方法を示しています。

<coherence:methodMapInterceptors 

  cachingInterceptorId="
                          
cachingInterceptor"

  flushingInterceptorId="
                          
flushingInterceptor">

  <coherence:caching

    methodFQN="org.springmodules.cache.samples.dao.CustomerDao.load"

    cacheName="customerCache" />

  <coherence:flushing

    methodFQN="org.springmodules.cache.samples.dao.CustomerDao.update"

    cacheNames="customerCache" />

</coherence:methodMapInterceptors>



<bean

  class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

  <property name="beanNames">

    <list>

      <idref local="customerDao" />

    </list>

  </property>

  <property name="interceptorNames">

    <list>

      <value>
                          
cachingInterceptor</value>

      <value>
                          
flushingInterceptor</value>

    </list>

  </property>

</bean>



<bean id="customerDao"

  class="org.springmodules.cache.samples.dao.CustomerDao" />

  <!-- Properties -->

</bean>
                        

お察しのとおり、上記のコンフィグレーションは、Beanごとのコンフィグレーションやソースレベルのメタデータ属性のセクションで示したコンフィグレーションと全く同じものです。 BeanNameAutoProxyCreatorは、Springフレームワークによって提供されます。詳細については、Springの オンラインドキュメントを参照してください。

ダウンロード

この記事で使われているコードサンプルのダウンロード: caching.zip

まとめ

キャッシングは、エンタープライズアプリケーションのパフォーマンスを劇的に向上させますが、アプリケーションのライフサイクルをかなり複雑にする 可能性があります。この記事では、宣言的キャッシングサービスを紹介しました。これは、このような複雑さをカプセル化し、Springを利用したアプリ ケーションに対して、コードフリーで透過的なキャッシングとキャッシュフラッシングを提供するフレームワークです。

Springの精神に基づき、宣言的キャッシングは、オープンソースや商用の様々なキャッシュプロバイダを最初からサポートしています。また、様々 なコンフィグレーション方法を提供しています。開発者が、プロジェクトのニーズに最適な組み合わせを選択できるようになっています。

宣言的キャッシングを利用すると、開発者はアプリケーションのコア要件に集中できます。その結果、コードの理解、保守、テストおよび再利用が容易に なります。キャッシングサービスはSpring IoCコンテナで設定するので、本当に必要になった場合にのみ、キャッシングサービスを追加できます。しかも、その際には、システム全体に及ぶ変更は必要 ありません。

関連情報

Alex Ruizは、ThoughtWorks, Incのコンサルタントです。彼は、並行プログラミング、分散コンピューティング、アスペクト指向プログラミングに関心を持っています。Alexは、Springフレームワークコミュニティの活動メンバーです。