@Cacheable に問題があり、Spring 式言語に基づくカスタム キーを使用しています。次のコードがあります
@Cacheable(value = "myCache", key = "#providerDTO.identifier")
ClientVO loadClientVOByProviderDTO(ProviderDTO providerDTO);
これは次のエラーをスローしています
org.springframework.expression.spel.SpelEvaluation Exception: EL1007Epos 0): Field or property 'identifier' cannot be found on null
providerDTO 引数が null ではありません。これを何度も確認しました。ドキュメントはこれがうまくいくはずだと言っているので、私は非常に混乱しています。ドキュメントは次の例を示しています
@Cacheable(value="books", key="#isbn.rawNumber")
静的メソッドも試しました。ここでは providerDTO が null であるため、これは NullPointerException をスローします。
public static String cacheKey(ProviderDTO providerDTO)
{
return providerDTO.identifier + "-" + providerDTO.clientID + "-" + providerDTO.clubID;
}
これをデバッグして何が起こっているのかを調べるにはどうすればよいですか? これは Spring 3.2.4-RELEASE です。@Cacheable タグはインターフェイス上にありますが、私は AspectJ ではなく標準の spring AOP を使用しているため、これでも問題なく動作するはずです。