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 إلى مستويين: الذاكرة والقرص. تحدد هذه الخاصية موقع ذاكرة التخزين المؤقت للقرص. يتم شرح المعلمات على النحو التالي:
(2) .DefaultCache: سياسة ذاكرة التخزين المؤقت الافتراضية. عندما لا تستطيع ehcache العثور على ذاكرة التخزين المؤقت المحددة ، سيتم استخدام سياسة ذاكرة التخزين المؤقت هذه. يمكن تعريف واحد فقط.
(3) .Cache: سياسة ذاكرة التخزين المؤقت المخصصة ، وهي سياسة ذاكرة التخزين المؤقت المخصصة. يتم شرح المعلمات على النحو التالي:
يدعم Springboot العديد من أساليب التخزين المؤقت: Redis ، Guava ، Ehcahe ، Jcache ، إلخ.
اشرح الفرق بين redis و ehcache:
ريديس: إنه برنامج مستقل قيد التشغيل. بعد التثبيت وحده ، يتم التلاعب به باستخدام Jedis في Java. نظرًا لأنه مستقل ، إذا كتبت برنامج اختبار الوحدة ، وضعت بعض البيانات في Redis ، ثم اكتب برنامجًا آخر للحصول على البيانات ، يمكنك الحصول على البيانات. و
Ehcache: من الواضح أنه يختلف عن Redis ، فهو ملتزم ببرامج Java. عندما يكون برنامج Java على قيد الحياة ، فهو حي. على سبيل المثال ، إذا قمت بكتابة برنامج مستقل لوضع البيانات ، ثم كتابة برنامج مستقل للحصول على البيانات ، فلن تحصل على بيانات. لا يمكن الحصول على البيانات إلا في برامج مستقلة.
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
شرح المعلمة:
بدون مزيد من اللغط ، فقط قم بتحميل الكود:
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 ** ، وقم بمسح ذاكرة التخزين المؤقت على الحذف ** وتحديث **.
شرح مفصل لشروحات ذاكرة التخزين المؤقت
cacheconfig: يتم استخدامه بشكل أساسي لتكوين بعض تكوينات ذاكرة التخزين المؤقت الشائعة التي سيتم استخدامها في هذه الفئة. هنا cacheconfig (cachenames = "المستخدمين"): يتم تكوين المحتوى الذي تم إرجاعه في كائن الوصول إلى البيانات ليتم تخزينه في كائن ذاكرة التخزين المؤقت المسمى المستخدمين. يمكننا أيضًا تحديده مباشرة من خلال اسم مجموعة ذاكرة التخزين المؤقت الخاصة بـ @Cachable دون استخدام هذا التعليق التوضيحي.
cachable: ستتم إضافة قيمة الإرجاع لوظيفة FindByName التي تم تكوينها إلى ذاكرة التخزين المؤقت. في الوقت نفسه ، عند الاستعلام ، سيتم أولاً الحصول على ذاكرة التخزين المؤقت ، وإذا لم يكن موجودًا ، فسيتم بدء الوصول إلى قاعدة البيانات. يحتوي هذا التعليق بشكل أساسي على المعلمات التالية:
بالإضافة إلى التعليقات التوضيحية المستخدمة هنا ، هناك أيضًا التعليقات التوضيحية الأساسية التالية:
cacheput: تم تكوينه على وظيفة ، يمكن تخزينه مؤقتًا وفقًا للمعلمات ويحدد الشروط. على عكس cachable ، فإنه يدعو الوظيفة حقًا في كل مرة ، لذلك يتم استخدامها بشكل أساسي لعمليات إضافة البيانات وتعديلها. معلماتها تشبه cachable. لوظائف محددة ، يرجى الرجوع إلى التحليل أعلاه للمعلمات القابلة للتشغيل.
CacheeVict: تم تكوينه على الوظائف ، التي تستخدم عادة في طرق الحذف ، لإزالة البيانات المقابلة من ذاكرة التخزين المؤقت. بالإضافة إلى نفس المعلمات مثل Cachable ، فإنه يحتوي على المعلمتين التاليتين:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.