3

Springが管理するキャッシュ(Spring 3.1の抽象化)のエントリを削除しようとしています。

アノテーションの「key」プロパティのSpELでメソッドの戻り値を参照する必要があります。

    /* (How to refer to the 'T' returned value in the "KEY_ID"?) */
@Caching(evict = { @CacheEvict(value = CACHE_BY_ID, key = KEY_ID) })
public T delete(AppID appID, UserID userID) throws UserNotFoundException {
    return inner.delete(appID, userID);
}

これを行う方法はありますか?

4

2 に答える 2

2

返されたオブジェクトを参照する方法はないようです。

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/cache.html#cache-spel-context

しかし、なぜあなたはそれをする必要があるのですか?@CacheEvictの「key」値の引数を参照できます。例:

@CacheEvict(value = CACHE_BY_ID, key = "#userID")
public T delete(AppID appID, UserID userID) throws UserNotFoundException {
...
}

Userオブジェクトの複数のプロパティを使用して複数のキャッシュから削除する必要があることについて、以下の応答に応答するその他のサンプルコード:

@Caching(evict = {
    @CacheEvict(value = CACHE_BY_ID, key = "#user.userID"),
    @CacheEvict(value = CACHE_BY_LOGIN_NAME, key = "#user.loginName")
    // etc.
})
public T delete(AppID appID, User user) throws UserNotFoundException {
...
}
于 2012-06-07T18:56:26.253 に答える
2

SpELで#resultを使用してみてください

于 2019-03-05T17:46:12.540 に答える