1.まず、springCacheはいくつかの依存関係をインポートする必要があります。
<依存関係> <groupId> org.springframework.boot </ groupId> <artifactId> spring-boot-starter-cache </ artifactId> </依存関係>
2.関連する注意の詳細な説明:
2.1、@ Cacheable:
2.1.1 @Cacheable属性:
キャッシュ可能はメソッドの結果をキャッシュします。将来同じデータが必要な場合は、メソッドを呼び出さなくてもキャッシュから直接取得できます。
CacheMananger:複数のキャッシュコンポーネントを管理します。キャッシュの実際のクラッド操作はキャッシュコンポーネントにあります。各キャッシュコンポーネントには独自の一意の名前があります。
属性の説明:
cacheNames / value:キャッシュコンポーネントの名前(つまり、どのキャッシュにIn)に入れる、これは配列メソッドであり、複数の
キーを指定できます:キャッシュデータに使用されるキー、指定でき、メソッドパラメーターの値がデフォルトで使用されます(次のようなspel式を使用できます)パラメータidの値である#idとして)
keyGenerato r:キージェネレーター、キージェネレーターのコンポーネントIDを自分で指定できます
(キーとkeyGeneratorのいずれかを選択します)
cacheManager:キャッシュマネージャーまたはリゾルバーを指定しますcacheResolver of指定されたキャッシュ;
条件:条件が満たされた場合にのみキャッシュを指定します。指定された条件が真の場合にのみキャッシュされます。
ただし、:負のキャッシュ(unlessと同等)ですが、指定された条件が真でない限り、メソッドの戻り値はキャッシュされません;(使用時に判断する結果を得ることができます)
sync:非同期モードを使用するかどうか。
2.1.2 @Cacheable実行中のプロセス:
1。メソッドを実行する前に、まずキャッシュ(キャッシュコンポーネント)をクエリし、cacheNamesで指定された名前に従って取得します。
(CacheManagerは最初に対応するキャッシュを取得します)、最初にキャッシュを取得するときに、キャッシュコンポーネントがない場合は自動的に作成されます。
2.キャッシュに移動してキャッシュ内のコンテンツを見つけ、キーを使用します。デフォルトはメソッドのパラメーターです
(キーは特定の戦略に従って生成され、
keyGeneratorはデフォルトでキーを生成するために使用されます)SimpleKeyGeneratorはキーのデフォルト戦略を生成します:
パラメーターがない場合、key = new SimpleKey()
Ifパラメータがあります
。key=パラメータの値複数のパラメータがある場合、key = new SimpleKey(params)
3。ターゲットメソッド
が見つからない場合は呼び出します。4。キャッシュが見つからない場合はターゲットメソッドを呼び出します。ターゲットメソッドとキャッシュの結果を返します。
備考:@Cacheableでマークされたメソッドが実行される前に、最初にこのデータがキャッシュにあるかどうかをクエリします。デフォルトでは、パラメータの値をキーとしてキャッシュをクエリします。そうでない場合は、メソッドを実行し、返された結果をキャッシュに入れます
2.1.3コア:
1. cacheManage(デフォルトはConcurrentMapCacheManager)を使用して、名前でCache(デフォルトはConcurrentMapCache)コンポーネントを取得します
2.キーはkeyGeneratorを使用して生成されます。デフォルトは、キーを生成するためのSimpleKeyGeneratorです。
3.キャッシュを取得し、そうでない場合はキャッシュコンポーネントを作成します
2.2、@ CachePut
@CachePutはメソッドを呼び出すだけでなく、データデータベースの変更中にキャッシュを更新し、キャッシュを更新します
1.設定でキャッシュコンポーネント名を更新する必要があります
2.更新する必要のあるキーを設定します(これは、対応する更新キャッシュを更新する前に、キャッシュの作成時に使用されたキー生成戦略と一致している必要があります。そうでない場合、無効になります)。ここでのキーはで使用できます。ふたつのやり方:
方法1:パラメータフォームkey = "#department.id"を使用します
方法2:戻り値を使用するresult key = "#result。パラメーター名"
その属性は
@Cacheable関連属性と同じです@Cacheableは#resultを使用できません。これは、戻り結果のみを使用できるためですが、@ Cacheableメソッドを実行する前にキーを使用する必要があるため、
2.3、@ CacheEvict
@CacheEvictキャッシュをクリア
key:データをクリアするためのキー値を指定します
cacheNames:キャッシュコンポーネントの名前を指定します
allEntries = true:キャッシュコンポーネントの下のすべてのデータをクリアします(デフォルトはfalse)
beforeInvocation = false:メソッドが実行される前にキャッシュをクリアするかどうか(デフォルトでは、メソッドの実行後にキャッシュをクリアします(つまり、false)。メソッドの実行後、メソッドが例外を報告した後にキャッシュがクリアされます。キャッシュはクリアされません)
beforeInvocation = true:メソッドが正常に実行されたかどうかに関係なく、メソッドが実行される前にキャッシュがクリアされることを示します
2.4、@キャッシング
@Cachingは複雑なキャッシュルールを定義します
如:@Caching(cacheable = {@Cacheable(cacheNames = "department"、key = "#id")}、put = {@CachePut(cacheNames = "department"、key = "#departmentName")})
2.5 @CacheConfig
@CacheConfigは、キャッシュコンポーネント、キー生成戦略、キャッシュマネージャー、およびキャッシュリゾルバーの名前をグローバルに定義します
キャッシュコンポーネント名のグローバル定義など:@CacheConfig(cacheNames = "department")