דוגמה לאתחול האביב של Boot Boot

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

בואו נסתכל על דוגמא לשימוש ב- Ehcache עם Spring Boot. נשתמש בגרסת Ehcache 3 מכיוון שהדבר מספק יישום של מנהל מטמון JSR-107.

הדוגמה היא שירות REST פשוט המייצר את הריבוע של המספר.

2. תלות

 org.springframework.boot spring-boot-starter-cache 2.2.2.RELEASE org.springframework.boot spring-boot-starter-cache 2.2.2.RELEASE javax.cache cache-api 1.1.1 org.ehcache ehcache 3.8.1 
  • קפיץ-אתחול-רשת
  • אביב-אתחול-המתנע-מטמון
  • javax.cache: cache-api
  • org.ehcache: ehcache

3. דוגמא

בואו ניצור בקר REST פשוט שמתקשר לשירות בריבוע מספר ומחזיר את התוצאה כמחרוזת JSON:

@RestController @RequestMapping ("/ number", MediaType.APPLICATION_JSON_UTF8_VALUE) מחלקת מספר NumberController {// ... @ מספר פרטי שירות מספר NumberService פרטי; @GetMapping (path = "/ square / {number}") מחרוזת ציבורית getSquare (@PathVariable Long number) {log.info ("call numberService to square {}", מספר); להחזיר String.format ("{\" ריבוע \ ":% s}", numberService.square (מספר)); }}

עכשיו בואו ניצור את השירות.

אנו מציינים את השיטה באמצעות @Cacheable כדי שאביב יטפל במטמון. כתוצאה מהערה זו, אביב ייצור פרוקסי של ה- NumberService ליירט שיחות אל כיכר שיטה להתקשר Ehcache.

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

@Service מחלקה ציבורית NumberService {// ... @Cacheable (value = "squareCache", key = "#number", condition = "#number> 10") ריבוע BigDecimal ציבורי (מספר ארוך) {BigDecimal ריבוע = BigDecimal.valueOf (מספר). מרובה (BigDecimal.valueOf (מספר)); log.info ("ריבוע של {} הוא {}", מספר, ריבוע); כיכר חזרה; }}

לבסוף, בואו ניצור את היישום הראשי של Spring Boot:

@SpringBootApplication מחלקה ציבורית יישום {public static void main (String [] args) {SpringApplication.run (Application.class, args); }}

4. תצורת מטמון

אנחנו צריכים להוסיף את האביב @EnableCaching ביאור לשעועית אביב כך שניהול המטמון מונע ההערות של אביב מופעל.

בואו ניצור CacheConfig מעמד:

@Configuration @EnableCaching מחלקה ציבורית CacheConfig {}

התצורה האוטומטית של אביב מוצאת את יישום ה- JSR-107 של Ehcache. עם זאת, שום מטמון לא נוצר כברירת מחדל.

כי לא אביב וגם Ehcache לא מחפשים ברירת מחדל ehcache.xml קוֹבֶץ. אנו מוסיפים את המאפיין הבא כדי לספר לאביב היכן למצוא אותו:

spring.cache.jcache.config = מסלול כיתה: ehcache.xml 

בואו ניצור ehcache.xml קובץ עם מטמון שנקרא מרובע מטמון:

  java.lang.Long java.math.BigDecimal 30 com.baeldung.cachetest.config.CacheEventLogger ASYNCHRONOUS UMPDERED CREATED פג תוקף 2 10 

ובואו גם להוסיף את המאזין לאירועי המטמון אשר רושם את שניהם נוצר ו לא בתוקף אירועי מטמון:

מחלקה ציבורית CacheEventLogger מיישם את CacheEventListener {// ... @Override public void onEvent (CacheEvent cacheEvent) {log.info (/ * message * /, cacheEvent.getKey (), cacheEvent.getOldValue (), cacheEvent.getNewValue ()); }}

5. בפעולה

אנו יכולים להשתמש ב- Maven כדי להפעיל את היישום על ידי הפעלה קפיץ אתחול mvn: לרוץ.

ואז פתח דפדפן וגש לשירות REST ביציאה 8080.

אם נלך ל // localhost: 8080 / number / square / 12, ואז נחזור {“מרובע”: 144}, וביומן נראה:

INFO [nio-8080-exec-1] cbcachetest.rest.NumberController: call number שירות לריבוע 12 INFO [nio-8080-exec-1] cbcachetest.service.NumberService: ריבוע של 12 הוא 144 INFO [e [_default_] -0] cbcachetest.config.CacheEventLogger: אירוע מטמון נוצר עבור פריט עם מפתח 12. ערך ישן = null, ערך חדש = 144

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

INFO [nio-8080-exec-2] c.b.cachetest.rest.NumberController: call number שירות לריבוע 12

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

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

INFO [nio-8080-exec-1] (...) NumberController: call number שירות לריבוע 12 INFO [e [_default _] - 1] (...) CacheEventLogger: אירוע המטמון פג לפריט עם מפתח 12. ערך ישן = 144, ערך חדש = null INFO [nio-8080-exec-1] (...) NumberService: ריבוע של 12 הוא 144 INFO [e [_default _] - 1] (...) CacheEventLogger: אירוע מטמון נוצר עבור פריט עם מפתח 12. ערך ישן = null, ערך חדש = 144

אם ניכנס // localhost: 8080 / number / square / 3 בדפדפן, אנו מקבלים את התשובה הנכונה של 9, אך הערך אינו נשמר במטמון.

הסיבה לכך היא המצב בו השתמשנו ב- @Cacheable ביאור לערכי מטמון בלבד למספרים הגבוהים מ -10.

6. מסקנה

במדריך מהיר זה, הראינו כיצד להגדיר את Ehcache עם Spring Boot.

כמו תמיד, ניתן למצוא את הקוד ב- GitHub.


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