การรวมคาเฟอีนและสปริงบูต
Caffeine เป็น Guava Cache รุ่นที่เขียนใหม่โดยใช้ Java 8 ซึ่งจะแทนที่ Guava ใน Spring Boot 2.0 หากคาเฟอีนปรากฏขึ้น CaffeinecacheManager จะได้รับการกำหนดค่าโดยอัตโนมัติ ใช้คุณสมบัติ Spring.cache.cache-Names เพื่อสร้างแคชเมื่อเริ่มต้นและสามารถปรับแต่ง (ตามลำดับ) ด้วยการกำหนดค่าต่อไปนี้:
ตัวอย่างเช่นการกำหนดค่าต่อไปนี้สร้างแคช FOO และ BAR ที่มีจำนวนสูงสุด 500 และเวลาการอยู่รอด 10 นาที:
spring.cache.cache-names = foo, barspring.cache.caffeine.spec = maximumsize = 500, expirieftercess = 600s
นอกจากนี้หาก com.github.benmanes.caffeine.cache.cacheloader ถูกกำหนดไว้มันจะเชื่อมโยงกับ caffeinecachemanager โดยอัตโนมัติ เนื่องจาก Cacheloader จะเชื่อมโยงแคชทั้งหมดที่จัดการโดย Cache Manager จึงต้องถูกกำหนดให้เป็น Cacheloader <Object, Object> และการกำหนดค่าอัตโนมัติจะไม่สนใจทุกประเภททั่วไป
แนะนำการพึ่งพา
<การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Cache </artifactid> </perdency> <predency> <roupid> com.github.ben-manes.caffeine </groupid>
เปิดใช้งานการรองรับแคช
ใช้คำอธิบายประกอบ @EnableCaching เพื่อเปิดใช้งานการสนับสนุนแคช
@springbootapplication@enableCaching // เปิดใช้งานแคช, คลาสสาธารณะที่ระบุ SpringbootStudentCacheCaffeinEapplication {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run -ไฟล์กำหนดค่า
เพิ่มการกำหนดค่าพิเศษสำหรับแคชเช่นความจุสูงสุดเวลาหมดอายุ ฯลฯ
spring.cache.cache-names = peoplespring.cache.caffeine.spec = initialCapacity = 50, maximumsize = 500, expiRefterwrite = 10s, refreshaffterwrite = 5S
หากใช้การกำหนดค่า RefreshafterWrite จะต้องระบุ cacheloader เช่น::
/** * ถั่วนี้จะต้องระบุและคุณสมบัติการกำหนดค่าของ RefreshafterWrite = 5S จะมีผล * * @return */ @Beanpublic Cacheloader <Object, Object> cacheloader () {cacheloader <object, object> cacheloader = new Cacheloader <Object, Object> } // เขียนวิธีนี้ใหม่และส่งคืนค่า oldValue กลับมาแล้วรีเฟรชแคช @Override วัตถุสาธารณะโหลด (คีย์วัตถุ, Object OldValue) โยนข้อยกเว้น {return oldValue; - ส่งคืน cacheloader;}คำแนะนำการกำหนดค่าคาเฟอีน:
สังเกต:
รหัสตัวอย่าง
/** * @author yuhao.wang */ @servicePublic คลาสบุคคลที่ได้รับการใช้งาน {ส่วนตัวคงที่ logger สุดท้าย logger = loggerFactory.getLogger (PersonServiceImpl.class); @autowired personrepository personlepository; @Override @cacheput (value = "people", key = "#person.id") บุคคลสาธารณะบันทึก (บุคคลบุคคล) {บุคคล p = personrepository.save (บุคคล); logger.info ("คือ ID, คีย์:" + p.getId () + "ข้อมูลแคช"); กลับ P; } @Override @CacheEvict (value = "people") // 2 โมฆะสาธารณะลบ (Long id) {logger.info ("ลบแคชข้อมูลด้วย ID, คีย์" + id + ""); // การดำเนินการลบจริงไม่ได้ดำเนินการที่นี่} /** * cacheable * value: แคชคำนำหน้าของคีย์ * คีย์: คีย์คีย์คำต่อท้าย * การซิงค์: ตั้งค่าหากแคชหมดอายุจำเป็นหรือไม่ที่จะต้องวางคำขอเพียงครั้งเดียวเพื่อขอฐานข้อมูลและคำขออื่น ๆ จะถูกบล็อกและค่าเริ่มต้นเป็นเท็จ */ @Override @Cacheable (value = "people", key = "#person.id", sync = true) บุคคลสาธารณะ findone (บุคคลบุคคล, สตริง a, สตริง [] b, รายการ <long> c) {person p = personrepository.findone (person.getId ()); logger.info ("สำหรับ id, key:" + p.getId () + "ข้อมูลถูกแคช"); กลับ P; } @Override @Cacheable (value = "people1") // 3 บุคคลสาธารณะ findOne1 () {person p = personrepository.findone (2l); logger.info ("สำหรับ id, คีย์คือ:" + p.getId () + "ข้อมูลถูกแคช"); กลับ P; } @Override @cacheable (value = "people2") // 3 บุคคลสาธารณะ findone2 (บุคคลบุคคล) {บุคคล p = personrepository.findone (person.getId ()); logger.info ("สำหรับ id, คีย์คือ:" + p.getId () + "ข้อมูลถูกแคช"); กลับ P; - ซอร์สโค้ด: https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น