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つのレベルに分割されます。このプロパティは、ディスクのキャッシュ位置を定義します。パラメーターは次のように説明されています。
(2).DefaultCache:デフォルトのキャッシュポリシー。 Ehcacheが定義されたキャッシュを見つけることができない場合、このキャッシュポリシーが使用されます。定義できるのは1つだけです。
(3).cache:カスタムキャッシュポリシー、カスタムキャッシュポリシー。パラメーターは次のように説明されています。
Springbootは、Redis、Guava、Ehcahe、Jcacheなどの多くのキャッシュ方法をサポートしています。
RedisとEhcacheの違いを説明してください:
Redis:それは独立したランニングプログラムです。単独でインストールした後、JavaでJedisを使用して操作されます。独立しているため、ユニットテストプログラムを作成する場合は、いくつかのデータをRedisに入れてから、データを取得するために別のプログラムを作成すると、データを取得できます。 、
Ehcache:それは明らかにRedisとは異なり、Javaプログラムに縛られています。 Javaプログラムが生きているとき、それは生きています。たとえば、データを配置するための独立したプログラムを作成し、データを取得するための独立したプログラムを作成する場合、データは取得できません。データは、独立したプログラムでのみ取得できます。
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のクリアを担当します
パラメーター説明:
これ以上苦労せずに、コードをアップロードするだけです。
@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 **に保存し、削除**でキャッシュをクリアできます。
キャッシュ注釈の詳細な説明
@CacheConfig:主に、このクラスで使用されるいくつかの一般的なキャッシュ構成を構成するために使用されます。ここで、@CacheConfig(cachenames = "users"):データアクセスオブジェクトで返されるコンテンツは、ユーザーという名前のキャッシュオブジェクトに保存されるように構成されています。また、この注釈を使用せずに、 @Cachableのキャッシュセットの名前を介して直接定義することもできます。
@Cachable:構成されたFindByName関数の返品値は、キャッシュに追加されます。同時に、クエリすると、最初にキャッシュから取得され、存在しない場合、データベースへのアクセスが開始されます。この注釈には、次のパラメーターがあります。
ここで使用されている2つの注釈に加えて、次のコアアノテーションもあります。
@cacheput:関数で構成されているため、パラメーターに従って条件を定義することができます。 @Cachableとは異なり、実際には毎回関数を呼び出すため、主にデータの追加および変更操作に使用されます。そのパラメーターは@cachableに似ています。特定の機能については、 @キャッチ可能なパラメーターの上記の分析を参照してください。
@cacheevict:通常は削除方法で使用される関数で構成され、対応するデータをキャッシュから削除します。 @cachableと同じパラメーターに加えて、次の2つのパラメーターがあります。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。