Springbootは、SpringのAOPテクノロジーに基づいて、注釈レベルでデータキャッシュ機能を実装します。すべてのキャッシュ構成は、宣言的トランザクションのように、注釈レベルでのみ構成されます。
Springは、さまざまなキャッシュテクノロジーを統合するために、キャッシュマネージャーとキャッシュインターフェイスを定義します。その中でも、CacheManagerは、Springが提供するさまざまなキャッシュテクノロジーの抽象的なインターフェイスです。キャッシュインターフェイスには、さまざまなキャッシュ操作が含まれています。
キャッシュマンガー
さまざまなキャッシュテクノロジーの場合、さまざまなキャッシュマネージャーを実装する必要があります。 Springは、次のCachemangerの実装を定義します。
| キャッシュマンガー | 説明する |
|---|---|
| SimpleCacheManager | 主にテスト用に、シンプルコレクションを使用してキャッシュを保存します |
| concurrentmapcachemanager | concurrentmapをキャッシュテクノロジーとして使用する(デフォルト) |
| noopcachemanager | テスト用 |
| ehcachecachemanager | ehcacheはキャッシュテクノロジーとして使用され、冬眠時によく使用されていました |
| GuavacacheManager | GoovaCacheをキャッシュテクノロジーとしてGoogle Guavaを使用しています |
| Hazelcastcachemanager | キャッシュテクニックとしてヘーゼルキャストを使用します |
| jcachecachemanager | Apache Commons JCSなどのキャッシュ技術としてJCache Standardを使用した実装 |
| RediscacheManager | キャッシュテクノロジーとしてRedisを使用します |
通常のスプリングブートは、Ehcache、Collection、Guava、concrurentMap、およびその他のキャッシュを自動的に構成し、concrurentmapcachemanagerはデフォルトで使用されます。 SpringbootのApplication.Properties構成ファイル。Spring.Cacheプレフィックスのプロパティを使用して構成されています。
アプリケーション構成
spring.cache.type=#Cached technical type spring.cache.cache-names=The name of the application starts to create the cache, spring.cache.ehcache.config=ehcache configuration file location spring.cache.infinispan.config=infinispan configuration file location spring.cache.jcache.config=jcache configuration file location spring.cache.jcache.provider =複数のjcache実装クラスのときにjcacheの実装クラスを指定します
エントリークラスの構成
Annotation @enablecachingを追加します
キャッシュ注釈
| 注釈 | 説明する |
|---|---|
| @cachable | メソッドを呼び出す前に、まずキャッシュ内のメソッドの返品値を探してください。この値が見つかると、キャッシュ値が返されます。それ以外の場合は、この方法が呼び出され、戻り値がキャッシュに配置されます。 |
| @cacheput | メソッドの返品値をキャッシュに入れます。メソッドが呼び出される前にキャッシュはチェックされず、メソッドは常に呼び出されます。 |
| @cacheevict | キャッシュ内の1つ以上のエントリをクリアします。 |
| @キャッシング | グループ化された注釈は、同時に複数の他のキャッシュアノテーションを適用できます。 |
Ehcacheを手動で使用します
実際の開発プロセス中に、注釈が使用されず、自分でキャッシュを追加する必要がある状況があります。 ehcacheを例に取り、構成プロセスを簡単に書き留めましょう。
1.依存関係を追加します
Springboot-CacheとEhcacheを紹介します。 ehcacheはバージョンの構成を必要とせず、スプリングブートのルートPOMが統合されていることに注意する必要があります。
<! - cache-> <dependency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-cache </artifactid> </dependency> <! - ehcache-> <依存関係> <groupid> net.sf.ehcache </groupid> ehcactid> ehcactid> ehcactid>
2。エントリークラスの構成
Annotation @enablecachingを追加します
@SpringBootApplication@enableCachingPublicクラスDemoApplication {} 3。EHCACHE設定
src/main/resourcesディレクトリで、ehcache.xmlファイルを追加して、記事の最後にあるコンテンツを参照してください。
4。アプリケーション。アプリケーション構成
#ehcacheキャッシュspring.cache.type = ehcache#ehcache構成ファイルspring.ehcache.config = classpath:/ehcache.xmlのパスを指定する
5.キャッシュを使用します
Springbootの自動構成Bean、org.springframework.cache.cachemanagerを注入します。
簡単なテストクラス:
パッケージcom.bbf.frame.test; import com.bbf.frame.application; Import org.apache.commons.lang3.stringutils; Import org.junit.test; import org.junit.runwith; import org.springframework.boot.test.context.context.context.context.context.context.context.context.context.context.context.context.context.contex org.springframework.cache.cache; import org.springframework.cache.cachemanager; Import org.springframework.test.context.junit4.springjunit4classrunner; Import org.springframework.test.context.web.webappconfiguration; javax.annotation.resource; @runwith(springjunit4classrunner.class)@webappconfiguration@springboottest(classes = application.class、webenvironment = springboottest.webenvironment.mock)パブリッククラスのtestcache {@resource private cachemanager cachemanager; @test public void cachetest(){//すべてのキャッシュスペースsystem.out.println(stringutils.join(cachemanager.getCachenames()、 "、"));キャッシュcache = cachemanager.getcache( "usercache"); cache.put( "key"、 "123"); System.out.println( "キャッシュサクセス"); string res = cache.get( "key"、string.class); System.out.println(res); }}付録ehcache.xml
<?xml version = "1.0" encoding = "utf-8"?> <ehcache xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation = "http://ehcache.org/ehcach.xddddddddddds <! - ファイルディレクトリを指定します。 ehcacheがハードディスクにデータを書き込むと、データはこのファイルディレクトリに書き込まれます - > <diskstore path = "java.io.tmpdir"/> <! - デフォルト管理ポリシー - > <defaultcache erternal = "false" maxelementinmemory = "10000"オーバーフルトディスク= = "120" diskexpirythreadintervalsconds = "120" memorystoreevictionpolicy = "lru"/> <! - このキャッシュは、秒数秒まで生き残ることができます。期間がタイムトイドル秒秒を超え、キャッシュが無効になっている場合 - > <キャッシュname = "usercache" etersal = "false" maxelementsinmemory = "100" overflowtodisk = "false" diskpersistent = "fals"タイムトイドレス= " maxElementsInmemoryメモリ内のキャッシュされたオブジェクトの最大数は、それを行うためにヒープサイズを見てください - > <! - 永遠:trueは、オブジェクトが決して期限切れになることを意味します。 At this time, the timeToIdleSeconds and timeToLiveSeconds properties will be ignored, and the default is false --> <!-- maxElementsOnDisk: The maximum number of cached objects in the hard disk, if 0 means infinity --> <!-- overflowToDisk: true means that when the number of objects cached in the memory reaches the maxElementsInMemory limit, the overflowed objects will be written to the hardディスクキャッシュ。注:キャッシュされたオブジェクトがハードディスクに書き込まれる場合、オブジェクトはシリアル化可能なインターフェイスを実装する必要があります。 - > <! - diskspoolbuffersizemb:ディスクキャッシュサイズ、デフォルトは30MBです。各キャッシュには、独自のキャッシュ領域が必要です。 - > <! - DISKPERSISTENT:仮想マシンをキャッシュするかどうかデータを再起動するかどうか - > <! - DiskexPirythReadIntervalseconds:ディスク障害スレッドの実行時間インターバル、デフォルトは120秒 - > <! - 最大時間を設定して、秒単位でオブジェクトをアイドル状態にします。オブジェクトが最後にアクセスされた場合、TimetoidLeseCondsプロパティ値がTimeToidLeseCondsプロパティ値を超えると、オブジェクトが期限切れになり、Ehcacheはキャッシュからクリアします。このプロパティは、永遠の財産が偽である場合にのみ有効です。このプロパティの値が0の場合、オブジェクトが無期限にアイドル状態になる可能性があることを意味します - > <! - TimetoliveseConds:オブジェクトがキャッシュに存在する最大時間を秒単位で設定します。オブジェクトがキャッシュに保存されている場合、キャッシュ内の時間がTimetoliveseCondsプロパティ値を超えると、オブジェクトが期限切れになり、Ehcacheはキャッシュからクリアします。このプロパティは、永遠の財産が偽である場合にのみ有効です。プロパティ値が0の場合、オブジェクトがキャッシュに無期限に存在できることを意味します。 TimeToliveseCondsは、意味をなすためにTimetOidLeseCondsプロパティよりも大きくなければなりません - > <! - MemoryStoreEvictionPolicy:MaxElementsInmemoryの制限に到達すると、Ehcacheは指定されたポリシーに従ってメモリをクリーンアップします。オプションのポリシーは、LRU(最新の最近使用されている、デフォルトポリシー)、FIFO(First In、First Out)、およびLFU(最低訪問数)です。 - > </ehcache>
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。