私はSpring 3.0とehcacheを使用しています。 Beanのいくつかのメソッドに@Cacheable
注釈を追加しました。私はそのBeanを他のBeanにインジェクトしています。これはアプリケーションコンテキストXMLファイルに登録されています。アプリケーションはehcacheアノテーションを追加する前に動作していましたが(私はcom.googlecode.ehcache-spring-annotations v 1.2.0を使用します)、アノテーションを追加した後、Springはアノテーションを含むBeanを適切に挿入することができません。ログファイルに表示されるエラーは次のとおりです。ehcacheを使用するBeanは注入できません
org.springframework.beans.ConversionNotSupportedException:タイプ '$ Proxy67のプロパティ値の変換に失敗しました。java.io.Serializable、org.springframework.aop.SpringProxy、org.springframework .aop.framework.Adav 'を' {プロパティ} 'の必須の型{my bean type}'に変更しました。ここで
は、私が仕事をするにehcacheのための私のアプリケーションコンテキストに追加したものです:
<context:annotation-config />
<context:component-scan base-package="{my root package}" />
<ehcache:annotation-driven cache-manager="cacheManager" />
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml" />
</bean>
私が最初に私はehcache.xmlファイルをロードするいくつかの問題を持っていたがあったので設定は、OKだと思いますそのログの対応するエラー。問題を修正した後、上記のエラーが発生しました。春はehcacheのキャッシュロジックを内部的に呼び出すBeanのプロキシを作成しますが、そのプロキシをBeanタイプに変換することはできません。
'@ Cacheable'アノテーションを持つBeanにはインタフェースがありますが、キャッシュされたものがインジェクトされている他のBeanのインタフェースまたはクラスを使用していますか? – Ralph
とにかく:覚えていれば、 '@ Cacheable'は3.0でサポートされていないSpring 3.1の機能です。 'javax.persistance.Cacheable'を使わないようにしてください! – Ralph
@Ralph、私は正しい '@ Cacheable'アノテーションを使用していると確信しています。私はちょうどいくつかの同僚との問題について話しました。あなたの最初のコメントはおそらく正しい答えを指しています。コンクリートクラスを使用してBeanを注入していますが、Springはプロキシをインターフェースにバインドしているようです。 –