Ehcache هو إطار تخزين مؤقت في Java في عملية التخزين المؤقت ، مع ميزات سريعة وليمن ، وهو Cacheprovider الافتراضي في السبات.
يوفر Ehcache مجموعة متنوعة من استراتيجيات التخزين المؤقت ، مقسمة بشكل رئيسي إلى مستويات الذاكرة والقرص ، لذلك لا داعي للقلق بشأن مشاكل السعة.
Spring-Boot هو إطار تكامل سريع مصمم لتبسيط عملية البناء والتطوير الأولية لتطبيقات الربيع الجديدة. يستخدم Framework طريقة محددة لتكوينه ، بحيث لم يعد المطورون بحاجة إلى تحديد تكوينات BoilerPlate.
نظرًا لأن Spring-Boot لا يتطلب أي ملفات تكوين BoilerPlate ، فإن SPRING-BOOT سيكون مختلفًا قليلاً عند دمج بعض الأطر الأخرى.
1.SPRING-BOOT هو إطار لحزم الجرة التي تتم إدارتها من خلال Maven. التبعيات المطلوبة لدمج ehcache هي كما يلي
<Rependency> <roupend> org.springframework </rougiD> <StifactId> زعم الربيع-الظهر </artifactid> </reperence> <reperence> <roupiD> net.sf.ehcache </groupid> <trofactid> hhcache </artifactid>
ملف pom.xml محدد كما يلي
<؟ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 <soph> 0.0.1-snapshot </version> <!-الوراثة الافتراضية من spring boot-> <Arnal> <roupiD> org.springframework.boot </rougeid> <StifactId> spring-boot-starter-parent </stifactid> <splex> <roupl> org.springframework.boot </groupId> <StifactId> Spring-boot-starter-web </shotifactid> </reperence> <reperence> <roupiD> org.springframework <Groper> org.springframework.boot </groupId> <StifactId> Spring-boot-starter-thymeleaf </stifactid> </sependency> <sepensid> <roughid> com.google.guava </rougiD> <StifactId> الجوافا </artifactId> <sored> 17.0 </version> </semperency> <reperency> <roupiD> org.sspringframework </groupid> <roughid> net.sf.ehcache </rougiD> <StifactId> ehcache </shintifactid> <الإصدار> 2.8.3 </version> </emperency> </ <roupl> org.springframework.boot </groupId> <StifactId> Spring-boot-maven-plugin </attifactid> </sultiin> </sultiins> </build> <spositories> <spository> <id> spring-snapshots </id> <SpeShots> <terupted> true </texuped> </sfleshots> </ropository> <ropository> <id> spring-milestones </id> <Url> http://repo.spring.io/milestone </url> </ultsository> </repository> <id> spring-snapshots </id> <Url> http://repo.spring.io/snapshot </url> </sultiinrepository> </sultripositories> </project>
2. باستخدام Ehcache ، نحتاج إلى ehcache.xml لتحديد بعض سمات ذاكرة التخزين المؤقت.
<؟ <diskstore path = "java.io.tmpdir /tmp_ehcache" /> <defaultCache eternal = "false" maxElementSinMemory = "1000" overflowtodisk = "false" diskpersistraind = "false" timetoidenseconds = "0" name = "demo" eternal = "false" maxElementInmemory = "100" 100 "overflowtodisk =" false "diskpersister =" false "timetoideseconds =" 0 "
اشرح العلامات في ملف XML هذا.
(1) .diskstore: هل مسار ذاكرة التخزين المؤقت ، ينقسم ehcache إلى مستويين: الذاكرة والقرص. تحدد هذه الخاصية موقع ذاكرة التخزين المؤقت للقرص. يتم شرح المعلمات على النحو التالي:
user.home user directory directory user.dir المستخدم الحالي دليل العمل java.io.tmpdir مسار الملف المؤقت الافتراضي
(2) .DefaultCache: سياسة ذاكرة التخزين المؤقت الافتراضية. عندما لا تستطيع ehcache العثور على ذاكرة التخزين المؤقت المحددة ، سيتم استخدام سياسة ذاكرة التخزين المؤقت هذه. يمكن تعريف واحد فقط.
(3) .Cache: سياسة ذاكرة التخزين المؤقت المخصصة ، وهي سياسة ذاكرة التخزين المؤقت المخصصة. يتم شرح المعلمات على النحو التالي:
خصائص عنصر ذاكرة التخزين المؤقت:
الاسم: اسم ذاكرة التخزين المؤقت
MaxElementSinMemory: الحد الأقصى لعدد الكائنات المخزنة مؤقتًا في الذاكرة
MaxElementSondisk: الحد الأقصى لعدد الكائنات المخزنة مؤقتًا في القرص الثابت. إذا كان 0 ، فهذا يعني اللانهاية
الأبدي: صحيح يعني أن الكائن لا ينتهي أبدًا. في هذا الوقت ، سيتم تجاهل خصائص الجدول الزمني وخصائص الجدول الزمني
OverflowTodisk: True يعني أنه عندما يصل عدد الكائنات المخبأة في الذاكرة إلى حد MaxElementSinMemory ، سيتم كتابة الكائنات المفرطة إلى ذاكرة التخزين المؤقت للقرص الصلب. ملاحظة: إذا تم كتابة الكائن المخطط مؤقتًا إلى القرص الثابت ، فيجب على الكائن تنفيذ الواجهة القابلة للتسلسل.
diskspoolbuffersizemb: حجم ذاكرة التخزين المؤقت للقرص ، الافتراضي هو 30 ميجابايت. يجب أن يكون لكل ذاكرة التخزين المؤقت منطقة ذاكرة التخزين المؤقت الخاصة بها.
DiskPersientip: ما إذا كنت تريد إعادة تشغيل بيانات الجهاز الظاهري أثناء البيانات
DiskexpiryThreadIntervalseconds: فاصل زمني لخيط فشل القرص ، الافتراضي هو 120 ثانية
TimetoidLesEconds: يحدد الحد الأقصى للوقت للسماح للكائن بأن يكون خاملاً ، في ثوانٍ. عندما يتم الوصول إلى الكائن للمرة الأخيرة ، إذا تجاوزت قيمة خاصية TimetoidLeseConds قيمة خاصية TimetoidLesEconds ، فسيتم انتهاء صلاحية الكائن وسيقوم Ehcache بمسحها من ذاكرة التخزين المؤقت. هذه الخاصية صالحة فقط إذا كانت الخاصية الأبدية خاطئة. إذا كانت قيمة الخاصية 0 ، فهذا يعني أن الكائن يمكن أن يكون خاملاً إلى أجل غير مسمى
TimetOlivesEconds: يضبط الحد الأقصى للوقت الذي يسمح فيه الكائن بالوجود في ذاكرة التخزين المؤقت ، في ثوانٍ. عندما يتم تخزين الكائن في ذاكرة التخزين المؤقت ، إذا تجاوز الوقت في ذاكرة التخزين المؤقت قيمة خاصية TimetOlivesEconds ، فسيتم انتهاء صلاحية الكائن وسيقوم Ehcache بمسحها من ذاكرة التخزين المؤقت. هذه الخاصية صالحة فقط إذا كانت الخاصية الأبدية خاطئة. إذا كانت قيمة الخاصية 0 ، فهذا يعني أن الكائن يمكن أن يكون موجودًا في ذاكرة التخزين المؤقت إلى أجل غير مسمى. يجب أن تكون TimetOliveseconds أكبر من خاصية TimetoidLesEconds
MemoryStoreEvictionPolicy: عندما يتم الوصول إلى حد MaxElementSinMemory ، ستقوم Ehcache بتنظيف الذاكرة وفقًا للسياسة المحددة. السياسات الاختيارية هي: LRU (آخر سياسة مستخدمة مؤخرًا ، ويف FIFO (First In ، First Out) ، و LFU (الحد الأدنى لعدد الزيارات).
3. فضح مدير Ehcache إلى حاوية سياق الربيع.
@configuration // يبدأ التعليقات التوضيحية في cacheableCachingpublic Class cacheconfiguration {/** ehcache المدير الرئيسي*/ @bean (name = "appehcacheCachemanager") public ehcacheCachemanager ehcachecachemanager (ehcachemanagerfactorybean) } / * * وفقًا لإعدادات المشتركة أم لا ، يقوم Spring بإنشاء قاعدة ehcache من خلال cachemanager.create () أو cachemanager () على التوالي. */ bean public ehcachemanagerfactorybean ehcachemanagerfactorybean () {ehcachemanagerfactorybean cachemanagerfactorybean = new ehcachemanagerfactorybean () ؛ Cachemanagerfactorybean.setConfigLocation (classPathResource جديد ("conf/ehcache-app.xml")) ؛ Cachemanagerfactorybean.setshared (صواب) ؛ إرجاع Cachemanagerfactorybean ؛ }}configuration: مشروح للبوت الربيع ، وشرح بشكل أساسي كفئة تكوين ، ويتم إعطاء الأولوية للمسح.
bean: أضف الفول إلى حاوية الربيع.
تتم جميع التكوينات حتى الآن ، ودمج الإطار من خلال Spring-Boot بهذه البساطة.
4. استخدام ehcache
باستخدام ehcache هو أساسا من خلال آلية ذاكرة التخزين المؤقت الربيع. لقد قمنا بتنفيذ آلية ذاكرة التخزين المؤقت لـ Spring باستخدام Ehcache ، حتى نتمكن من استخدام آلية ذاكرة التخزين المؤقت Spring تمامًا من حيث الاستخدام.
بعض الملاحظات متورطة:
cachable: مسؤول عن إضافة قيمة إرجاع الطريقة إلى ذاكرة التخزين المؤقت ، المعلمة 3
cacheevict: مسؤول عن مسح ذاكرة التخزين المؤقت ، المعلمة 4
شرح المعلمة:
القيمة: لا يمكن أن يكون اسم موقع ذاكرة التخزين المؤقت فارغًا. إذا تم استخدام Ehcache ، فهو اسم ذاكرة التخزين المؤقت المعلنة في ehcache.xml
المفتاح: المفتاح المخبوق ، الافتراضي فارغ ، مما يعني نوع المعلمة وقيمة المعلمة للطريقة المستخدمة كمفتاح ، ويدعم Spel
الشرط: شرط الزناد ، فقط إذا تم استيفاء الشرط سيتم إضافة إلى ذاكرة التخزين المؤقت. الافتراضي فارغ ، مما يعني أنه يتم إضافة جميعهم إلى ذاكرة التخزين المؤقت ويدعم SPEL
allentries: معلمة cacheevict ، صحيح يعني تطهير جميع ذاكرة التخزين المؤقت في القيمة ، الافتراضي كاذب
بدون مزيد من اللغط ، فقط قم بتحميل الكود:
servicepublic class cacheDemoserviceImpl تنفذ cacheDemoservice {/** * مفتاح ذاكرة التخزين المؤقت */سلسلة نهائية ثابتة thing_all_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 إنشاء (شيء شيء) {long id = getNextId () ؛ Thing.setId (id) ؛ data.put (id ، الشيء) ؛ } cachable (value = demo_cache_name ، key = "#thing.getID () + 'thing'") Override Things Public 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 ()) ؛ } OverrideCacheput (value = demo_cache_name ، key = "#thing.getId ()+'thing'") cacheeVict (value = demo_cache_name ، key = thing_all_key) عام ما هو التحديث (الشيء) {system.out.println (الشيء) ؛ data.put (thing.getId () ، الشيء) ؛ العودة شيء } cacheevict (value = demo_cache_name) Override public void delete (long id) {data.remove (id) ؛ }}5. تحتاج فقط إلى التعليق على طريقة طبقة الخدمة من خلال التعليقات التوضيحية ويمكنك استخدام ذاكرة التخزين المؤقت ، وتخزين ذاكرة التخزين المؤقت على Find ** ، وقم بمسح ذاكرة التخزين المؤقت على الحذف ** وتحديث **.
لخص
ما سبق هو طريقة دمج الينابيع التي تدمج Ehcache لتنفيذ آلية التخزين المؤقت التي أدخلها المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!