ehcacheは、高速で無駄のない機能を備えた純粋なJavaインプロセスキャッシュフレームワークであり、冬眠のデフォルトのキャッシュプロバイダーです。
Ehcacheは、主にメモリレベルとディスクレベルに分割されたさまざまなキャッシュ戦略を提供するため、容量の問題について心配する必要はありません。
Spring-Bootは、新しいSpringアプリケーションの初期建設および開発プロセスを簡素化するために設計された高速統合フレームワークです。フレームワークは特定の方法を使用して構成するため、開発者はボイラープレート構成を定義する必要がなくなります。
Spring-BootにはVoilerplate構成ファイルは必要ないため、他のフレームワークを統合すると、スプリングブートはわずかに異なります。
1.Spring-Bootは、Mavenを通じて管理されたJARパッケージのフレームワークです。 ehcacheの統合に必要な依存関係は次のとおりです
<Dependency> groupId> org.springframework </groupid> <artifactid> spring-context-support </artifactid> </dependency> <dependency> net.sf.ehcache </groupid> <artifactid> ehcache </artifactid> <バージョン
特定のpom.xmlファイルは次のとおりです
<?xml version = "1.0" encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance <http://www.w3.org/2001 xsi:schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.0.sdsd"> <modelversion> 4.0.0 </modelversion> <グループ<グループ< <artifactid> boot-cache </artifactid> <バージョン> 0.0.1-snapshot </version> <! - spring bootのデフォルト - > <parent> <parent> springframework.boot </groupid> <artifactid> spring-boot-starter-parent < <Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> </dependency> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-data-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa-jpa </ <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-thymeleaf </artifactid> </dependency> <依存関係> groupid> <artifactid> mysql-connector-java </artifactid> <dependency> <GroupId> com.google.guava </groupid> <artifactid> guava </artifactid> <bersion> 17.0 </version> </depence> <dependency> ssspringframework </groupId> <artifactid> spring-context-support </artifactid> </depenting> <depency> <GroupId> net.sf.ehcache </groupid> <artifactid> ehcache </artifactid> <version> 2.8.3 </version> </dependency> </dependencymanagement> <dependencies> </dependencies> </dependencies> </dependencies> </dendecies> despincies> </despincies> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> <repositories> <id> spring-snapshots </id> <url> http://repo.spring.io/spring. <SnapShots> <Enabled> true </enabled> </snapshots> </repository> <repository> <id> spring-milestones </id> <url> http://repo.spring.io/milestone </url> </repository> </repository> </repository> <pluminrepository> <プラグイン<id> spring-snapshots </id> <url> http://repo.spring.io/snapshot </url> </pluginrepository> <pluginrepository> <id> spring-milestones </id> <url> http://repo.spring.io/milestone </url </url> </plaginrepositories> </project>
2. ehcacheを使用して、いくつかのキャッシュ属性を定義するには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.xds" <ディスクストアパス= "java.io.tmpdir /tmp_ehcache" /> <defaultcache erternal = "false" maxelementsinmemory = "1000" Overflowtodisk = "false" diskpersistent = "fals" TimetoidLeseConds = "0 name = "demo" eterinal = "false" maxelementsinmemory = "100" overflowtodisk = "false" diskpersistent = "false" TimetoidLeseConds = "0" TimetoliveseConds = "300" MemorystoreEvictionPolicy = "lru" />> < /ehcache>
このXMLファイルのタグを説明してください。
(1).diskstore:キャッシュパスは、ehcacheはメモリとディスクの2つのレベルに分割されます。このプロパティは、ディスクのキャッシュ位置を定義します。パラメーターは次のように説明されています。
user.home user home directory user.dirユーザー現在の作業ディレクトリjava.io.tmpdirデフォルトの一時ファイルパス
(2).DefaultCache:デフォルトのキャッシュポリシー。 Ehcacheが定義されたキャッシュを見つけることができない場合、このキャッシュポリシーが使用されます。定義できるのは1つだけです。
(3).cache:カスタムキャッシュポリシー、カスタムキャッシュポリシー。パラメーターは次のように説明されています。
キャッシュ要素のプロパティ:
名前:キャッシュ名
MaxElementsInmemory:メモリ内のキャッシュされたオブジェクトの最大数
MaxElementSondisk:ハードディスク内のキャッシュオブジェクトの最大数。 0の場合、無限を意味します
ETERNAL:TRUEとは、オブジェクトが決して期限切れになることを意味します。この時点で、TimetoidLeseCondsおよびTimetoliveseCondsプロパティは無視され、デフォルトはfalseです
OverflowTodisk:Trueとは、メモリでキャッシュされたオブジェクトの数がMaxElementsInmemoryの制限に達すると、オーバーフローされたオブジェクトがハードディスクキャッシュに書き込まれることを意味します。注:キャッシュされたオブジェクトがハードディスクに書き込まれる場合、オブジェクトはシリアル化可能なインターフェイスを実装する必要があります。
diskspoolbuffersizemb:ディスクキャッシュサイズ、デフォルトは30MBです。各キャッシュには、独自のキャッシュ領域が必要です。
DiskPerSistent:データ中に仮想マシンを再起動するかどうか
diskexpirythreadintervalseconds:ディスク障害スレッドの実行時間間隔、デフォルトは120秒です
TimeToidLeseConds:最大時間を設定して、オブジェクトを秒単位でアイドル状態にすることができます。オブジェクトが最後にアクセスされた場合、TimetoidLeseCondsプロパティ値がTimeToidLeseCondsプロパティ値を超えると、オブジェクトが期限切れになり、Ehcacheはキャッシュからクリアします。このプロパティは、永遠の財産が偽である場合にのみ有効です。プロパティ値が0の場合、オブジェクトが無期限にアイドル状態になることを意味します
TimetoliveseConds:オブジェクトがキャッシュに存在する最大時間を数秒で設定します。オブジェクトがキャッシュに保存されている場合、キャッシュ内の時間がTimetoliveseCondsプロパティ値を超えると、オブジェクトが期限切れになり、Ehcacheはキャッシュからクリアします。このプロパティは、永遠の財産が偽である場合にのみ有効です。プロパティ値が0の場合、オブジェクトがキャッシュに無期限に存在できることを意味します。タイムトリブセカンドは、意味をなすためにTimetOidLeseCondsプロパティよりも大きくなければなりません
MemoryStoreEvictionPolicy:MaxElementsInmemoryの制限に到達すると、Ehcacheは指定されたポリシーに従ってメモリをクリーンアップします。オプションのポリシーは、LRU(最新の最近使用されている、デフォルトポリシー)、FIFO(First In、First Out)、およびLFU(最低訪問数)です。
3。ehcacheマネージャーをスプリングコンテキストコンテナに公開します。
@configuration // annotationはcache @enablecachingpublic cacheconfiguration {/** ehcache Manager*/ @bean(name = "appehcachecachemanager")Public ehcachecacecachemanager(ehcachemanageractbean beanbeantbeantbeantbeantebecchemegemegemegemegemegemegemegemegemegemegemegemegemegemegemegemegemegemen ()); } / * *共有の設定によれば、Springはそれぞれcachemanager.create()または新しいcachemanager()を介してehcacheベースを作成します。 */ @bean public ehcachemanagerfactorybean ehcachemanagerfactorybean(){ehcachemanagerfactorybean cachemanagerfactorybean = new ehcachemanagerfactorybean(); cachemanagerfactorybean.setConfiglocation(new ClassPathResource( "conf/ehcache-app.xml")); cachemanagerfactorybean.setshared(true); Cachemanagerfactorybeanを返します。 }}@configuration:主に構成クラスとして注釈が付けられたスプリングブートに注釈が付けられ、スキャンが優先されます。
@Bean:スプリングコンテナに豆を追加します。
これまでにすべての構成が行われており、Spring-Bootを介してフレームワークを統合するのは簡単です。
4. ehcacheを使用します
Ehcacheの使用は、主にスプリングキャッシュメカニズムを介しています。 ehcacheを使用してスプリングキャッシュメカニズムを実装したため、使用面でスプリングキャッシュメカニズムを完全に使用できます。
いくつかのメモが関係しています:
@Cachable:メソッドの返品値をキャッシュに追加する責任、パラメーター3
@CacheeVict:キャッシュのクリア、パラメーター4のクリアを担当します
パラメーター説明:
値:キャッシュのロケーション名は空にすることはできません。 ehcacheを使用する場合、ehcache.xmlで宣言されたキャッシュの名前です
キー:キャッシュされたキー、デフォルトは空です。つまり、キーとして使用されるメソッドのパラメータータイプとパラメーター値を意味し、SPELをサポートします
条件:トリガー条件、条件が満たされた場合のみ、キャッシュに追加されます。デフォルトは空です。つまり、それらはすべてキャッシュに追加され、スペルをサポートします
allentries:cacheevictパラメーター、trueは、値のすべてのキャッシュをクリアすることを意味します、デフォルトはfalseです
これ以上苦労せずに、コードをアップロードするだけです。
@servicepublic class cachedemoserviceimpl cachedemoservice {/** * cache key */public static final string thing_key = "/" thing_all/""; /***値属性は、使用するキャッシュポリシーを示します。キャッシュポリシーはehcache.xml */ public static final string demo_cache_name = "demo";にあります。 @cacheevict(value = demo_cache_name、key = thing_all_key)@override public void create(thing thing){long id = getnextid(); Thing.setId(id); data.put(id、thing); } @cachable(value = demo_cache_name、key = "#thing.getid() + 'thing'")@Override public things findbyid(long id){system.err.println( "no cache!" + id); data.get(id); } @cachable(value = demo_cache_name、key = thing_all_key)@override public list <thing> findall(){return lists.newarraylist(data.values()); } @Override @cacheput(value = demo_cache_name、key = "#thing.getid()+'thing'")@cacheevict(value = demo_cache_name、key = thing_all_key)public what updation(system.out.println(gont); data.put(thing.getid()、thing);返品; } @cacheevict(value = demo_cache_name)@override public void delete(long id){data.remove(id); }}5.注釈を介してサービスレイヤーメソッドに注釈を付けるだけで、キャッシュを使用し、キャッシュをFind **に保存し、削除**でキャッシュをクリアできます。
要約します
上記は、ehcacheを統合して編集者によって導入されたキャッシュメカニズムを実装するスプリングブートの方法です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!