פינוי מטמון במגף האביב

1. סקירה כללית

במדריך קצר זה אנו הולכים ללמוד כיצד אנו יכולים לבצע פינוי מטמון באמצעות אביב. אנו ניצור דוגמה קטנה שתדגים זאת.

לפני שתמשיך, עיין במאמר שלנו - מדריך למטמון באביב - כדי להכיר את האופן שבו מטמון האביב עובד.

2. כיצד לפנות מטמון?

אביב מספק שתי דרכים לפינוי מטמון, באמצעות @CacheEvict ביאור על שיטה או על ידי חיווט אוטומטי של CacheManger ולנקות את זה על ידי קריאת ה- ברור() שיטה.

כך ניתן ליישם את שני מנגנוני פינוי המטמון בקוד.

2.1. באמצעות @CacheEvict

בואו ניצור שיטה ריקה עם @CacheEvict ביאור וספק את שם המטמון אותו אנו רוצים לנקות כטיעון של ההערה (במקרה זה, אנו רוצים לנקות את המטמון בשם "ראשית"):

@CacheEvict (value = "first", allEntries = true) בטל ציבורי evictAllCacheValues ​​() {}

האביב יירט את כל השיטות שמסומנות עליהן @CacheEvict ולנקות את כל הערכים על בסיס כל הכניסות דֶגֶל. אפשר לפנות ערכים על בסיס מפתח מסוים.

לשם כך, כל שעלינו לעשות הוא להעביר את מפתח המטמון כטיעון להערה במקום ל- כל הכניסות דֶגֶל:

@CacheEvict (value = "first", key = "#cacheKey") חלל ציבורי evictSingleCacheValue (cacheKey מחרוזת) {}

מאז הערך של מַפְתֵחַ המאפיין הוא דינמי, אנו יכולים להשתמש בשפת ביטוי האביב או במחולל מפתחות מותאם אישית על ידי יישום KeyGenerator לבחור את טיעוני העניין או את הנכסים המקוננים.

2.2. באמצעות CacheManager

לאחר מכן, בואו נסתכל כיצד אנו יכולים לפנות את המטמון באמצעות ה- CacheManager מסופק על ידי מודול Spring Cache. ראשית, עלינו לחבר אוטומטית את היישום CacheManager אפונה.

ואז נוכל לנקות את המטמונים בעזרתו בהתאם לצרכים שלנו:

@ CacheManager אוטומטי cacheManager; חלל ציבורי evictSingleCacheValue (מחרוזת cacheName, מחרוזת cacheKey) {cacheManager.getCache (cacheName) .evict (cacheKey); } חלל ציבורי evictAllCacheValues ​​(Stache cacheName) {cacheManager.getCache (cacheName) .clear (); }

כפי שאנו רואים בקוד, ה ברור() השיטה תנקה את כל ערכי המטמון ואת לְפַנוֹת() השיטה תנקה ערכים על בסיס מפתח.

3. כיצד לפנות את כל המטמונים?

אביב לא מספק פונקציונליות מחוץ לקופסה כדי לנקות את כל המטמונים. אך אנו יכולים להשיג זאת בקלות באמצעות getCacheNames () שיטת מנהל המטמון.

3.1. פינוי לפי דרישה

בואו נראה עכשיו איך נוכל לנקות את כל המטמונים לפי דרישה. על מנת ליצור נקודת טריגר, עלינו לחשוף תחילה נקודת קצה:

@RestController מחלקה ציבורית CachingController {@Autowired CachingService cachingService; @GetMapping ("clearAllCaches") ריק ריק clearAllCaches () {cachingService.evictAllCaches (); }}

בתוך ה CachingService, אנחנו יכולים אז נקה את כל המטמונים על ידי איטרציה מעל שמות המטמון שהושגו ממנהל המטמון:

חלל ציבורי evictAllCaches () {cacheManager.getCacheNames (). stream () .forEach (cacheName -> cacheManager.getCache (cacheName) .clear ()); }

3.2. פינוי אוטומטי

ישנם מקרי שימוש מסוימים בהם יש לבצע פינוי מטמון באופן אוטומטי במרווחי זמן מסוימים. במקרה הזה, אנו יכולים להשתמש בתזמון המשימות של האביב:

@Scheduled (fixedRate = 6000) בטל פומבי evictAllcachesAtIntervals () {evictAllCaches (); }

4. מסקנה

למדנו כיצד לפנות מטמונים בדרכים שונות. אחד הדברים שכדאי לשים לב אליהם על המנגנונים האלה הוא שהוא יעבוד עם כל יישומי המטמון השונים כמו אה-מטמון, אינפיני-טווח, הצבת אפאצ'י וכו '

כמו תמיד, ניתן למצוא את כל הדוגמאות המוזכרות במדריך זה ב- Github.


$config[zx-auto] not found$config[zx-overlay] not found