English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SpringBoot الفارمة تسمح بالتجميع مع أنواع مختلفة بروتوكولات التخزين، على سبيل المثال EhCache، Redis، Hazelcast، Infinispan، Caffeine،، وما إلى ذلك. يسمح بروتوكول التخزين للمطورين بتهيئة التخزين بشكل شفاف وواضح في التطبيق. يجب استخدام التخزين لأنه يقلل من عدد التنفيذيات ويحسن أداء التطبيق.
في التوجيه في Spring، لا يقدم التخزين التجريدي مساحة التخزين الفعلية. هذا يعتمد على org.springframework.cache.Cache أو org.springframework.cache.CacheManager التعريف التجريدي للواجهة.
يقدم إطار عمل Spring Boot Framework التكامل التلقائي لتسهيل تنفيذ التخزين. يبحث في المكتبات والملفات الإعدادية، ويقوم بتهيئة Bean الاعتماديات المطلوبة عند بدء التطبيق. يشمل تكامل التخزين التلقائي الخطوات التالية:
إضافة تعليقات في ملف الإعدادات @EnableCaching . إضافة المكتبات المطلوبة إلى مسار الكلاسمكتبة التخزين. إضافة بروتوكول التخزين في جذر مسار الكلاس،ملف الإعدادات.
على سبيل المثال، إذا أردنا تنفيذ EhCache ، أولاً، قم بتمكين التخزين في ملف الإعدادات.
@SpringBootApplication @EnableCaching public class Employee { @Bean public CacheManager cacheManager() { //some code } }
في pom.xml إضافة إلى الملف EhCache الاعتماديات. سيضيف المكتبات المطلوبة إلى مسار الكلاس.
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>
في النهاية، قم بتهيئة ملف إعدادات بروتوكول التخزين. هنا، نستخدم EhCache، لذا يجب إعدادها في جذر مسار الكلاس. ehcache.xml ملف.
عندما لم نحدد CacheManager أو CacheResolver ، سيحاول إطار عمل Spring Boot Framework استكشاف بروتوكولات التخزين التالية:
Generic JCache EhCache Hazelcast Infinispan Couchbase Redis Caffeine بسيط
إذا وجد Spring Boot بروتوكولات تخزين متعددة في مسار الكلاس، يجب علينا في هذه الحالة application.properties يحدد بروتوكول التخزين المحدد في الملف.
spring.cache.ehcache.provider=net.sf.ehcache.CacheManager spring.cache.ehcache.config=classpath:config/another-config.xml
يمكننا استخدام الخاصية spring.cache.type إعداد بروتوكول التخزين المحدد. إذا كنت ترغب في تعطيل التخزين، استخدمه في بيئة محددة.
spring.cache.type=none
Spring Boot Framework提供了一个启动程序依赖项,该依赖项在应用程序中添加了基本的缓存依赖项。默认情况下,启动程序缓存依赖项提供 spring-context-support 依赖项。
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.2.3.RELEASE</version> </dependency>
Spring Boot Framework自动配置CacheManager,可以通过实现 CacheManagerCustomizer 接口进一步对其进行自定义。
在follwoig示例中,我们设置了一个传递标记主映射的空值。
@Bean public CacheManagerCustomizer<ConcurrentMapCacheManager> cacheManagerCustomizer() { return new CacheManagerCustomizer<ConcurrentMapCacheManager>() { @Override public void customize(ConcurrentMapCacheManager cacheManager) { cacheManager.setAllowNullValues(false); } }; }
上面的bean需要一个自动配置的 ConcurrentMapCacheManager 。如果ConcurrentMapCacheManager没有自动配置,则定制器将不会以任何方式调用。我们可以使用任意数量的定制程序,并使用注解 @Order أو @Ordered。
如果spring-context-support定义了至少一个 org.springframework.cache.Cache.Cache bean,它将使用通用缓存。 CacheManager 捆绑并配置了所有bean。
JCache هو javax.cache.spi.CahingProvider.. إنه يقع في مسار التكوين JSR 107. يقدم spring-boot-starter-cache JCacheCacheManager.يمكننا أيضًا إضافة أي مكتبة تخزين أخرى.
EHCache هي مفتوحة المصدر تعتمد على Java ويُستخدم على نطاق واسع. لاستخدام EhCache، يجب علينا استخدام التبعيات التالية.
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>
هناك طريقتان لتكوين EhCache:
أولاً، من خلال تكوين ملف Java POJO (حيث يتم تكوين جميع معلمات التكوين من خلال API EhCache). ثانيًا، من خلال تكوين ملف XML، نقوم بتكوين EhCache بناءً على بنية الأنظمة التي يتم تقديمها.
يستخدم EhCache ملفًا يُدعى ملف ehcache.xml. إذا وجد التطبيق ملفًا في مسار التكوين، فهو يقدم من قبل spring-boot-starter-cache كـ EhCacheCacheManager . يمكننا استخدام الأصناف التالية لتكوين ملف XML:
spring.cache.ehcache.config=classpath:config/demo-config.xml
عندما نقوم بتمكين السحابة في تطبيقنا، يقوم Spring Boot تلقائيًا بتحويل HazelcastInstance تم تضمينها في CacheManager. تقوم بتوزيع البيانات بشكل متساوٍ بين العقد. يمكننا استخدام الأصناف التالية لتكوين Hazelcast.
spring.hazelcast.config=classpath:config/demo-hazelcast.xml
إذا لم يتم تعيين هذا المفتاح، سيحاول Spring Boot العثور على hazelcast.xml (ملف تكوين Hazelcast) ملف.
Infinispan هي مكتبة Java مدمجة. تستخدم كـ السحابةأو شبكة البيانات. إنه يتمثل في مفتاح-قيمةيخزن البيانات بشكل شكل. يمكنه التفاعل بسهولة مع JCache، JPA Quarkus، Spring وما إلى ذلك.
لا يحتوي على موقع ملف افتراضي، لذا يجب أن نحدد بشكل واضح. إذا لم يحدد infinispan بشكل واضح، سيتم استخدام البرنامج التمهيدي الافتراضي.
spring.cache.infinispan.config=infinispan.xml
عند تنفيذ couchbase-spring-cache عند تكوين CouchebaseCacheManager . جميع العمليات المتعلقة بالمخزن تتم في خزان في تنفيذ. يسمح لنا بتعيين الخصائص spring.cache.cache-name لإنشاء مخازن أخرى (إذا لزم الأمر).
برنامج مخصص يسمح لنا بإنشاء خزانات أخرى يمكن فيها إنشاء مخزن آخر.
لنفهم هذه المفاهيم من خلال مثال.
افترض أننا بحاجة إلى ثلاثة مخازن تُدعى cacheA ، cacheB،و cacheC . cacheA و cacheB تقعان على خزان رئيسي (أي خزان التكوين التلقائي) cacheC على خزان آخر، والذي يمكن أن يبقى قيد الحياة لبضع ثوانٍ، مثل 4 ثوانٍ. لذلك، يمكننا إنشاء cacheA و cacheB عن طريق تحديد الخصائص كما يلي:
spring.cache.cache-names=cacheA, cacheB
عندما نكوّن Redis عندما يتم تكوين RedisCacheManager . إنه يسمح أيضًا لنا باستخدام الخصائص spring.cache.cache-names لإنشاء مخازن أخرى. يمكن استخدام الخصائص spring.cache.redis.* لتحقيق التكوين الافتراضي.
يمكننا استخدام RedisCacheConfiguration تحكم كامل في التكوين الافتراضي. قوة. البذور.
spring.cache.cache-names=cacheA, cacheB spring.cache.redis.time-to-live=100000
تم تكوين الخصائص التالية لثماني مخازن، يُدعى كل منها cacheA و cacheB، ومدة حياتها 10 دقائق.
كافيين هي مكتبة 缓存 مبنية على Java. إنها توفر أيضًا ذاكرة التخزين المؤقت في الذاكرة. إذا وجدت إعتماد spring-boot-starter-cache في مسار الكلاسات كافيين، فإنه يتم تكوينه تلقائيًا CaffeineCacheManger إذا كنت ترغب في استخدام كافيين في تطبيقك،则需要إضافةالإعتمادات التالية:
<dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.7.0</version> </dependency>
من خلال خزنة القهوة، يمكننا استخدام خصائص يحدد spring.cache.caffeine.spec خواص التخزين المؤقتالحجمومدة الحياة. على سبيل المثال:
spring.cache.cache-names=cacheA,cacheB spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=600s
الإعداد أعلاه يخلق خمسينيين يُدعى cache1 وcache2. الحجم الأقصى للخزنة هو 500 ، ومدة الحياة الأقصى هي 6 ثانية.
هذا هو التنفيذ الافتراضي. إذا لم يتم العثور على مزود التخزين المؤقت في مسار الكلاس، سيتم استخدام ConcurrentHashMap تكوين كخزنة التخزين المؤقت.
على سبيل المثال، إذا كنا بحاجة إلى خمسيني، نستخدم إعداد أسمائها. المزايا التالية:
spring.cache.cache-names=cache1,cache2
عندما نستخدم ملاحظة@EnableCaching لتمكين التخزين المؤقت، يتطلب التطبيق إعدادات مناسبة. عندما نريد في بيئة معينة تعطيلاستخدام التخزين المؤقت. نستخدم خصائص spring.cache.type تعطيل التخزين المؤقت
spring.cache.type=none