カフェインとスプリングブートの統合
カフェインは、Java 8を使用してGuavaキャッシュの書き直しバージョンであり、Spring Boot 2.0でGuavaを置き換えます。カフェインが現れた場合、CaffeineCacheManagerが自動的に構成されます。 spring.cache.cache-namesプロパティを使用して、スタートアップでキャッシュを作成し、次の構成で(順番に)カスタマイズできます。
たとえば、次の構成により、最大500数と10分のサバイバル時間でfooおよびbarキャッシュが作成されます。
spring.cache.cache-names = foo、barspring.cache.caffeine.spec = maximumsize = 500、expirefteraccess = 600s
さらに、com.github.benmanes.caffeine.cache.cacheloaderが定義されている場合、Caffeinecachemanagerに自動的に関連付けられます。 CacheloaderはCache Managerが管理するすべてのキャッシュを関連付けるため、Cacheloader <Object、Object>、および自動構成はすべての一般的なタイプを無視するように定義する必要があります。
依存関係を紹介します
<依存関係> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-cache </artifactid> </dependency> <dependency> groupid> com.github.ben-manes.caffeine </groupid> <artifactid> caffeine </artifactid> </</</</mention
キャッシュサポートを有効にします
@enablecachingアノテーションを使用して、キャッシュサポートを有効にします
@springbootapplication@enablecaching //キャッシュを有効にする、指定されたパブリッククラスSpringBootStudentCacheCaffeIneapplication {public static void main(String [] args){springBootStudentCachecaffeIneapplication.class、args); }}構成ファイル
最大容量、有効期限など、キャッシュ用の特別な構成が追加されました。
spring.cache.cache-names = peoplespring.cache.caffeine.spec = initialcapacity = 50、maximumsize = 500、expireafterwrite = 10s、refreshafterwrite = 5s
refreshafterwrite構成を使用する場合、次のようなカチェロダーも指定する必要があります。
/** *この豆を指定する必要があり、Refreshafterwrite = 5sの構成プロパティは効果があります * * @return */ @beanpublic cacheloader <object、object> cacheloader(){cacheloader <object、object> object> cacheloader = new cacheloader <object> object> objectヌル; } //このメソッドを書き換えて、oldValue値を返してから、cache @override public object reload(object key、object oldvalue)を更新します{return oldvalue; }}; CACHELOADERを返します;}カフェイン構成の指示:
知らせ:
サンプルコード
/** * @author yuhao.wang */ @servicepublic class personserviceimpl personservice {private static final logger logger = loggerfactory.getLogger(personserviceimpl.class); @autowired personrepository personrepository; @override @cacheput(value = "people"、key = "#person.id")public person save(person person){person p = personrepository.save(person); logger.info( "is id、key:" + p.getid() + "data cached"); pを返します。 } @override @cacheevict(value = "people")// 2 public void remove(long id){logger.info( "id、key" + id + ""でデータキャッシュを削除します); //実際の削除操作はここで実行されません} /** *キャッシュ可能 *値:キーのプレフィックスをキャッシュします。 *キー:キーサフィックスをキャッシュします。 *同期:キャッシュが期限切れになった場合に設定します。データベースを要求するリクエストを1つだけ配置する必要があり、他のリクエストがブロックされ、デフォルトがfalseです。 */ @override @cachable(value = "people"、key = "#person.id"、sync = true)public person findone(person person、string a、string [] b、list <long> c){person p = personrepository.findone(person.getid()); logger.info( "idの場合、key:" + p.getid() + "データはキャッシュされています"); pを返します。 } @override @cachable(value = "people1")// 3 public Person findone1(){person p = personrepository.findone(2l); logger.info( "id、key is:" + p.getid() + "data is cached"); pを返します。 } @override @cachable(value = "people2")// 3 Public Person findone2(person person){person p = personrepository.findone(person.getid()); logger.info( "id、key is:" + p.getid() + "data is cached"); pを返します。 }}ソースコード:https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。