2017-01-05 13 views
0

次のスニペットを検討すると、キーとして使用されるpropertiesContainerのメソッドを呼び出そうとしています。Springキャッシュメソッド呼び出し結果をキーに渡す方法は?

@Cacheable(value = EhCacheManagerApi.CACHE_X_TOKEN, key = ("#{propertiesContainer.getId()}")) 
public String getToken(PropertiesContainer propertiesContainer) 

私は現在のフォーマットが私を与え、キーに対する正しいのspel式を見つけ出すように見えることはできません。

org.springframework.expression.spel.SpelParseException: EL1043E:(pos 1): Unexpected token. Expected 'identifier' but was 'lcurly({)' 

私はkey = ("#propertiesContainer.id")key = ("#propertiesContainer.getId()")

propertiesContainerは、メソッドを持つインターフェイスであるを試してみました前getIdStringを返します。

おそらく、これはSpELのBeanメソッド呼び出しと同じではないのでしょうか?

答えて

0

あなたは括弧なしで、純粋な表現を試してみました:

@Cacheable(value = EhCacheManagerApi.CACHE_X_TOKEN, key="propertiesContainer.id") 

これはPropertiesContainerはのgetId()メソッドとのインタフェースである春4.3.3に私のために動作します。

また、コンパイルされたコードにデバッグ情報がない場合は、メソッドのパラメータ名の代わりに#p0.idを使用する必要があります。 the accepted answer hereを参照してくださいが、それは私が疑う別のエラーを与えるだろう。

0

あなたはこの

@Cacheable(value = EhCacheManagerApi.CACHE_X_TOKEN, key = "#{T(java.lang.String).format('%d-%d', #propertiesContainer.id)}") 
を試してみてくださいでした
関連する問題