تكامل الحذاء الكافيين والربيع
Caffeine هي نسخة إعادة كتابتها من ذاكرة التخزين المؤقت Guava باستخدام Java 8 ، والتي ستحل محل الجوافة في Spring Boot 2.0. إذا ظهر الكافيين ، فسيتم تكوين Caffeinecachemanager تلقائيًا. استخدم خاصية spring.cache.cache-names لإنشاء ذاكرة التخزين المؤقت عند بدء التشغيل ويمكن تخصيصها (بالترتيب) مع التكوين التالي:
على سبيل المثال ، يقوم التكوين التالي بإنشاء ذاكرة التخزين المؤقت Foo and Bar مع عدد أقصى قدر من 500 ووقت البقاء على قيد الحياة 10 دقائق:
spring.cache.cache-names = foo ، barspring.cache.caffeine.spec = MaximumSize = 500 ، ExpiReafterAccess = 600s
بالإضافة إلى ذلك ، إذا تم تعريف com.github.benmanes.caffeine.cache.cacheloader ، فسيتم ربطه تلقائيًا بـ Caffeinecachemanager. نظرًا لأن cacheloader ستقوم بربط جميع ذاكرة التخزين المؤقت التي يديرها مدير ذاكرة التخزين المؤقت ، يجب تعريفها على أنها cacheloader <object و Object> والتكوين التلقائي جميع الأنواع العامة.
إدخال التبعيات
<Rependency> <roupeD> org.springframework.boot </rougiD> <intifactid> spring-boot-starter cach </shintifactid> </sependency> <rependency>
تمكين دعم ذاكرة التخزين المؤقت
استخدم شرح enableCaching لتمكين دعم ذاكرة التخزين المؤقت
@springbootapplication@enableCaching // تمكين ذاكرة التخزين المؤقت ، فئة SpringBootStudentCacheCaffeIneApplication {public static void main (string [] args) {springapplication.run (SpringBootStudentCachecaffeineApplication.class ، args) ؛ }}ملف التكوين
إضافة تكوينات خاصة لذاكرة التخزين المؤقت ، مثل الحد الأقصى للسعة ، ووقت انتهاء الصلاحية ، إلخ.
spring.cache.cache-names = peoplespring.cache.caffeine.spec = initialCapacity = 50 ، maximumsize = 500 ، expireeafterwrite = 10s ، shreftafterwrite = 5s
إذا تم استخدام تكوين RefreshAfterWrite ، يجب أيضًا تحديد cacheloader ، مثل:
/** * يجب تحديد هذه الفول ، وسيؤثر خاصية التكوين الخاصة بـ RefreshAfterWrite = 5s على * * */ @ @beanpublic cacheloader <object ، object> cacheloader () {cacheloader <object ، jouse> cacheloader = new cacheloader <object ، object> } // أعد كتابة هذه الطريقة وإرجاع قيمة OldValue مرة أخرى ، ثم قم بتحديث Cache Override الكائن العام (مفتاح الكائن ، Object OldValue) يلقي الاستثناء {return OldValue ؛ }} ؛ إرجاع cacheloader ؛}تعليمات تكوين الكافيين:
يلاحظ:
نموذج الرمز
/** * Author yuhao.wang */ @servicepublic personerviceImpl تنفذ personservice {private static final logger = loggerfactory.getLogger (personviceimpl.class) ؛ @autowired personrepository personrepository ؛ OverRideCacheput (value = "people" ، key = "#person.id") شخص عام حفظ (شخص) {person p = personrepository.save (شخص) ؛ logger.info ("is id ، key:" + p.getID () + "data cached") ؛ العودة P ؛ } OverrideCacheeVict (value = "people") // 2 public void remove (ong id) {logger.info ("إزالة ذاكرة التخزين المؤقت للبيانات مع المعرف ، المفتاح" + id + "") ؛ // لم يتم تنفيذ عملية الحذف الفعلية هنا} /** * قابلة للتخطيط * القيمة: ذاكرة التخزين المؤقت بادئة المفتاح. * المفتاح: لاحقة مفتاح ذاكرة التخزين المؤقت. * Sync: تعيين إذا انتهت عملية ذاكرة التخزين المؤقت ، فهل من الضروري تقديم طلب واحد فقط لطلب قاعدة البيانات ، ويتم حظر الطلبات الأخرى ، والافتراضي ضئيل. */ OverrideCachable (value = "people" ، key = "#person.id" ، sync = true) public pully findOne (الشخص الشخص ، السلسلة A ، سلسلة [] B ، قائمة <Ngt> c) {person p = personrepository.findone (person.getid ()) ؛ logger.info ("for id ، key:" + p.getID () + "dataed dative cached") ؛ العودة P ؛ } OverrideCachable (value = "people1") // 3 public profiredone1 () {person p = personrepository.findone (2l) ؛ logger.info ("for id ، key هو:" + p.getID () + "البيانات مخزنة مؤقتًا") ؛ العودة P ؛ } OverRideCachable (value = "people2") // 3 public profiredone2 (شخص شخص) logger.info ("for id ، key هو:" + p.getID () + "البيانات مخزنة مؤقتًا") ؛ العودة P ؛ }} الكود المصدر: https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/release
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.