يقوم Springboot بتنفيذ وظيفة تخزين البيانات على مستوى التعليقات التوضيحية ، استنادًا إلى تقنية AOP في Spring. يتم تكوين جميع تكوينات ذاكرة التخزين المؤقت فقط على مستوى التعليقات التوضيحية ، مثل المعاملات التعريفية.
يحدد Spring واجهات CacheManager و Cache لتوحيد تقنيات التخزين المؤقت المختلفة. من بينها ، Cachemanager هي واجهة مجردة لتقنيات التخزين المؤقت المختلفة التي توفرها الربيع. تحتوي واجهة ذاكرة التخزين المؤقت على عمليات ذاكرة التخزين المؤقت المختلفة.
Cachemanger
للحصول على تقنيات ذاكرة التخزين المؤقت المختلفة ، يجب تنفيذ المختلفين. يحدد الربيع تنفيذ Cachemanger التالي.
| Cachemanger | يصف |
|---|---|
| SimpleCachemanager | استخدم مجموعة بسيطة لتخزين ذاكرة التخزين المؤقت ، خاصة للاختبار |
| ConcurrentMapcachemanager | استخدم ConcurrentMap كتكنولوجيا ذاكرة التخزين المؤقت (افتراضي) |
| Noopcachemanager | للاختبار |
| ehcachecachemanager | يتم استخدام Ehcache كتقنية ذاكرة التخزين المؤقت ، ويستخدم في كثير من الأحيان عند استخدام السبات |
| جوافاكشيمانجر | Goaavacache باستخدام Google Goaava كتكنولوجيا التخزين المؤقت |
| HazelcastCachemanager | باستخدام Hazelcast كأسلوب تخزين مؤقت |
| jcachecachemanager | التنفيذ باستخدام معيار JCache كتقنيات التخزين المؤقت مثل Apache Commons JCS |
| Rediscachemanager | باستخدام Redis كتقنية التخزين المؤقت |
قام Springboot العادي تلقائيًا بتكوين Ehcache و Collection و Goaava و ConcurrentMap وغيرها من التخزين المؤقت لنا ، ويتم استخدام ConcurrentMapcachemanager افتراضيًا. ملف تكوين Application.Properties الخاص بـ SpringBoot ، تم تكوينه باستخدام خصائص بادئة spring.cache.
تكوين التطبيق
spring.cache.type =#cached type type spring.cache.cache-names = اسم التطبيق يبدأ في إنشاء ذاكرة التخزين المؤقت ، spring.cache.ehcache.config = ehcache موقع ملف spring.cache.infinispan.config = infinispan configuration file spring.cache.jcache.cache.cache فئة تنفيذ JCache عند فئات تنفيذ JCache متعددة
تكوين فئة الدخول
إضافة التعليقات التوضيحية enableCaching
شرح التخزين المؤقت
| التعليقات التوضيحية | يصف |
|---|---|
| cachable | قبل استدعاء طريقة ما ، يجب عليك أولاً البحث عن قيمة إرجاع الطريقة في ذاكرة التخزين المؤقت. إذا كان يمكن العثور على هذه القيمة ، فسيتم إرجاع القيمة المخزنة مؤقتًا. خلاف ذلك ، سيتم استدعاء هذه الطريقة وسيتم وضع قيمة الإرجاع في ذاكرة التخزين المؤقت. |
| cacheput | ضع قيمة الإرجاع للطريقة في ذاكرة التخزين المؤقت. لم يتم فحص ذاكرة التخزين المؤقت قبل استدعاء الطريقة ، وسيتم دائمًا استدعاء الطريقة. |
| cacheevict | مسح واحد أو أكثر من الإدخالات في ذاكرة التخزين المؤقت. |
| caching | يمكن تطبيق التعليقات التوضيحية المجمعة في نفس الوقت المتعدد التعليقات التوضيحية الأخرى لذاكرة التخزين المؤقت. |
استخدام يدوي ehcache
أثناء عملية التطوير الفعلية ، هناك موقف لا يوجد فيه استخدام التعليقات التوضيحية وتحتاج إلى إضافة ذاكرة التخزين المؤقت بنفسك. دعنا نأخذ ehcache كمثال ونكتب بإيجاز عملية التكوين.
1. إضافة التبعيات
إدخال springboot-cache و ehcache. تجدر الإشارة إلى أن Ehcache لا يتطلب تكوين الإصدار ، وتم دمج جذر Springboot.
<!-ذاكرة التخزين المؤقت-> <reperency> <roupiD> org.springframework.boot </rougeid> <Stifactid> spring-boot-starter-cache </frinsiD> </premited> <!-ehcache-> <redificed> net.sf.ehcache </rougeid>
2. تكوين فئة الدخول
إضافة التعليقات التوضيحية enableCaching
@springbootapplication@EnableCachingpublic Class DemoapPlication {} 3. تكوين ehcache
في دليل SRC/Main/Resources ، أضف ملف ehcache.xml ، راجع المحتوى في نهاية المقالة.
4. Application.Application التكوين
# تكوين ehcache cache spring.cache.type = ehcache# حدد مسار ملف تكوين ehcache spring.cache.ehcache.config = classpath: /ehcache.xml
5. استخدام ذاكرة التخزين المؤقت
حقن bean التي تم تكوينها تلقائيًا ، org.springframework.cache.cachemanager.
فئة اختبار بسيطة:
حزمة com.bbf.frame.test ؛ استيراد com.bbf.frame.application ؛ استيراد org.apache.commons.lang3 org.springframework.cache.cache ؛ استيراد org.springframework.cache.cachemanager ؛ استيراد org.springframewework.test.context.junit4.springjunit4classrunner javax.annotation.resource ؛@runwith (springJunit4ClassRunner.class)@webappconfiguration@springboottest (classes = application.class ، webenvironment = springBoottest.webenvironment.mock) testcache public {resource cachemanager cachemanager ؛ test public void cachetest () {// إظهار جميع مسافات ذاكرة التخزين المؤقت system.out.println (stringutils.join (cachemanager.getCachenames () ، "،")) ؛ ذاكرة التخزين المؤقت Cache = cachemanager.getCache ("UserCache") ؛ cache.put ("key" ، "123") ؛ System.out.println ("Cache Sciverse") ؛ String res = cache.get ("key" ، string.class) ؛ System.out.println (res) ؛ }} التذييل ehcache.xml
<؟ <!- حدد دليل الملف. عندما يكتب ehcache البيانات إلى القرص الثابت ، سيتم كتابة البيانات إلى دليل الملفات هذا-> <diskstore path = "java.io.tmpdir"/> <!-سياسة الإدارة الافتراضية-> <defaultCache eternal = "false" maxelementsinmeMory = "10000" overflowtodisk = "true" diskpersistive = "falsa" "false" "saze". timetoliveseconds = "120" dickexpiryThreadInterValseconds = "120" MemoryStoreEvictionPolicy = "lru"/> <!- يمكن أن تنجو هذا التخزين المؤقت إلى TimetoliveSeconds Seconds. إذا تجاوزت هذه الفترة timetoidleseconds ثانية وتم إبطال ذاكرة التخزين المؤقت-> <cache name = "usercache" eternal = "false" maxelementsinmemory = "100" overflowtodisk = "false" diskpersister MaxElementSinMemory الحد الأقصى لعدد الكائنات المخزنة مؤقتًا في الذاكرة ، انظر إلى حجم الكومة الخاص بك للقيام بذلك-> <!-الأبدي: صحيح يعني أن الكائن لن ينتهي أبدًا. في هذا الوقت ، سيتم تجاهل خصائص الجدول الزمني وخصائص TimetOlivesEconds ، والافتراضي الخاطئ-> <!-MaxElementSondisk: الحد الأقصى لعدد الكائنات المحفظة عليه في القرص الصلب ، إذا كان 0 لا حصر له-> <! ذاكرة التخزين المؤقت القرص الصلب. ملاحظة: إذا تم كتابة الكائن المخطط مؤقتًا إلى القرص الثابت ، فيجب على الكائن تنفيذ الواجهة القابلة للتسلسل. -> <!-diskspoolbuffersizemb: حجم ذاكرة التخزين المؤقت للقرص ، الافتراضي هو 30 ميجابايت. يجب أن يكون لكل ذاكرة التخزين المؤقت منطقة ذاكرة التخزين المؤقت الخاصة بها. -> <!-DiskPersister: ما إذا كان يجب إعادة تشغيل بيانات إعادة تشغيل الجهاز الظاهري-> <!-DiskexpiryThreadInterValseconds: الفاصل الزمني لتشغيل مؤشر ترابط القرص ، فإن الافتراضي هو 120 ثانية-> <!-TimetoidleSeconds: يحدد الحد الأقصى للوقت للسماح للكائن في أن يكون Idle ، في ثوانٍ. عندما يتم الوصول إلى الكائن للمرة الأخيرة ، إذا تجاوزت قيمة خاصية TimetoidLeseConds قيمة خاصية TimetoidLesEconds ، فسيتم انتهاء صلاحية الكائن وسيقوم Ehcache بمسحها من ذاكرة التخزين المؤقت. هذه الخاصية صالحة فقط إذا كانت الخاصية الأبدية خاطئة. إذا كانت قيمة هذه الخاصية 0 ، فهذا يعني أن الكائن يمكن أن يكون الخمول إلى أجل غير مسمى-> <!-TimetOlivesEconds: يضع الحد الأقصى للوقت الذي يسمح فيه الكائن بالوجود في ذاكرة التخزين المؤقت ، في ثوانٍ. عندما يتم تخزين الكائن في ذاكرة التخزين المؤقت ، إذا تجاوز الوقت في ذاكرة التخزين المؤقت قيمة خاصية TimetOlivesEconds ، فسيتم انتهاء صلاحية الكائن وسيقوم Ehcache بمسحها من ذاكرة التخزين المؤقت. هذه الخاصية صالحة فقط إذا كانت الخاصية الأبدية خاطئة. إذا كانت قيمة الخاصية 0 ، فهذا يعني أن الكائن يمكن أن يكون موجودًا في ذاكرة التخزين المؤقت إلى أجل غير مسمى. يجب أن تكون TimetOliveSeconds أكبر من خاصية TimetoidLesEconds بحيث تكون منطقية-> <!-MemoryStoreEvictionPolicy: عندما يتم الوصول إلى حد MaxElementSinMemory ، سوف يقوم Ehcache بتنظيف الذاكرة وفقًا للسياسة المحددة. السياسات الاختيارية هي: LRU (آخر سياسة مستخدمة مؤخرًا ، ويف FIFO (First In ، First Out) ، و LFU (الحد الأدنى لعدد الزيارات). -> </ehcache>
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.