Topics
Enterprise Architecture
Springのための宣言的キャッシングサービス
Pages:
1,
2,
3,
4
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フレームワークコミュニティの活動メンバーです。