ホームページ  >  記事  >  Java  >  Java Springのキャッシュキー設定に関する注意事項

Java Springのキャッシュキー設定に関する注意事項

黄舟
黄舟オリジナル
2017-10-17 09:29:272043ブラウズ

この記事では、Java Spring-cache のキー設定に関する注意事項を主に紹介します。編集者は、それを必要とする友人の参考のためにここで共有します。

プロジェクトの同時実行パフォーマンスを向上させるには、外部データ ソース アクセス、Restful API 呼び出し、再利用可能な複雑な計算の 3 種類の関数処理結果をキャッシュするローカル メモリ キャッシュの導入を検討してください。現在、Spring Cache の @Cacheable アノテーション メソッドが使用されており、キャッシュの具体的な実装は Guava Cache です。
ここでは具体的なキャッシュ構成については紹介しませんが、主要な構成については説明します。

@Cacheable(value="cacheName", key"#id")  
public ResultDTO method(int id);

2. 組み合わせ形式

@Cacheable(value="cacheName", key"T(String).valueOf(#name).concat('-').concat(#password))  
public ResultDTO method(int name, String password);

3.フォーム

@Cacheable(value="cacheName", key"#user.id) 
public ResultDTO method(User user);

4. カスタム キー ジェネレーター

@Cacheable(value="gomeo2oCache", keyGenerator = "keyGenerator") 
public ResultDTO method(User user);

注: Spring のデフォルトの SimpleKeyGenerator は、次のように関数名をキー


に結合しません。

私たちは期待していました出力:

@Component 
public class CacheTestImpl implements CacheTest { 
  @Cacheable("databaseCache") 
  public Long test1() 
  { return 1L; } 
  @Cacheable("databaseCache") 
  public Long test2() 
  { return 2L; } 
  @Cacheable("databaseCache") 
  public Long test3() 
  { return 3L; } 
  @Cacheable("databaseCache") 
  public String test4() 
  { return "4"; } 
}

実際の出力は次のとおりです:

1 
2 
3 
4

さらに、アトミックタイプの配列はキーとして直接使用しても効果がありません

上記 2 つの問題を解決するために、A をカスタマイズしましたKeyGenerator は次のとおりです:


1 
1 
1 
ClassCastException: java.lang.Long cannot be cast to java.lang.String

このメソッドを使用すると、マルチパラメータ、アトミック型配列、メソッド名の識別などの問題を解決できます。

以上がJava Springのキャッシュキー設定に関する注意事項の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。